UDP套接字的特点
流控制是区分UDP和TCP的最重要的标志
UDP内部工作原理
数据包传输中UDP和IP的作用.png由上图可以看出,UDP最主要的作用就是根据端口号将传到主机的数据包交付给最终的UDP套接字。
UDP中的服务器端和客户端没有连接
与TCP不同,不必调用listen函数和accept函数,UDP中只有创建套接字的过程和数据交换过程。
基于UDP的数据I/O函数
创建好TCP套接字后,传输数据时无需再添加地址信息,但由于UDP不会保持连接(相当于邮筒),因此每次传输数据都要添加目标地址信息。
#include <sys/socket.h>
ssize_t sendto(int sock,void *buff,size_t nbytes,int flags,struct sockaddr *to,socklen_t addrlen);
- sock 用于传输数据的UDP套接字文件描述符
- buff 保存待传输数据的缓冲地址值
- nbytes 待传输的数据长度,以字节为单位
- flag 可选项参数,若没有则传递0
- to 存有目标地址信息sockaddr结构体变量的地址值
- addrlen 传递给参数to的地址值结构体变量长度
#include <sys/socket.h>
ssize_t recvfrom(int sock,void *buff,size_t nbytes,int flags,struct sockaddr *from,socklen_t addrlen);
- sock 用于接收数据的UDP套接字文件描述符
- buff 保存接收数据的缓冲地址值
- nbytes 可接收的数据长度,以字节为单位
- flag 可选项参数,若没有则传入0
- from 存有发送端地址信息sockaddr结构体变量的地址值
- addrlen 传递给参数tfrom的地址值结构体变量长度
网友评论