因为最近在做有关网络编程的项目,用到了多播UDP通信。之前也是看了好多遍,但是总是没有形成清晰合理的架构网络。今天再次看了一遍,好记性不如烂笔头,这次总结写下博客。
客户服务器通信服务流程交互时间线如下图所示:
按照图,依次介绍各个函数,以及我的理解。
socket函数
首先从socket函数说起,这里和TCP通信一样,通过socket函数,指定期望的通信协议类型。
#include<sys/socket.h>
Intsocket(int family,int type,int protocol);
成功返回非负描述符,若出错则返回-1.
第一个参数指明了协议簇,目前支持5种协议簇,最常用的有AF_INET(IPv4协议)和AF_INET6(IPv6协议);
第二个参数指明套接口类型,主要有种类型可选:SOCK_STREAM(字节流套接口)、SOCK_DGRAM(数据报套接口)和SOCK_RAW(原始套接口);
Protocol参数可以如上图所示的某个协议类型常值,或者设为0,已选择所给定family和type组合的系统默认值。
Recvfrom和sendto函数