UDP协议
UDP是一个无连接协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。
UDP编程C/S架构
UDP网络编程流程:
服务器:
创建套接字 socket(int domain, int type, int protocol);
domain:通信域,协议族
type:套接字的类型
protocol:附加协议,如果不需要,则设置为0
将服务器的ip地址、端口号与套接字进行绑定 bind(int sockfd, const struct sockaddr *addr,socklen_t addrlen);
sockfd:文件描述符,socket的返回值
addr:网络信息结构体
addrlen:addr的长度
接收数据 recvfrom(int sockfd, void *buf, size_t len, int flags,5 struct sockaddr *src_addr, socklen_t *addrlen);
sockfd:文件描述符,socket的返回值
buf:保存接收的数据
len:buf的长度
flags:标志位
src_addr:源的网络信息结构体
addrlen:src_addr的长度
发送数据 sendto(int sockfd, const void *buf, size_t len, int flags, 4 const struct sockaddr *dest_addr, socklen_t addrlen);
sockfd:文件描述符,socket的返回值
buf:保存接收的数据
len:buf的长度
flags:标志位
src_addr:源的网络信息结构体
addrlen:dest_addr的长度
发送与接收函数socklen_t addrlen与 socklen_t *addrlen注意区分
客户端:
创建套接字 socket()
发送数据 sendto()
接收数据 recvfrom()
关闭套接字 close()
同上服务器即可