UDP网络通讯
在前面一篇博客中写道TCP套接字的网络通讯TCP网络通讯;下面来介绍UDP套接字的网络通讯。
一、UDP与TCP的区别:
TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议
UDP是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。可靠性由上层应用实现,所以要实现UDP的可靠性传输,必须通过应用层来实现和控制。
二、TCP如何实现可靠性传输
请求与应答
按序到达
丢包,运行重传机制
面向连接
通过滑动窗口进行流量控制
超时重传
接收方缓冲满后,发送方定时询问滑动窗口容量
网络拥塞避免
三、UDP的通讯实现
服务器端与客户端的接口介绍
一、 创建套接字文件
int socket(int domain, int type, int protocol);
domain:AF_INET,表示IPv4;
type:在TCP中是SOCK_STREAM表示流式服务,在UDP中为SOCK_DGRAM表示数据报服务
二、绑定服务器端的结构体
int bind(int sockfd, struct sockaddr *addr, socklen_t addrlen);
- 服务器端绑定的是自己本地的信息
三、因为UDP是无连接的,所以,我们不需要想TCP中一样设置连接,监听;
所以,UDP就已经可以开始进行数据的发送与接受了:
UDP中的接收端接口:
ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_addr, socklen_t *adddrlen);
- 在服务器端,接受的客户端的消息,所以得自己创建一个客户端的结构体进行绑定;
UDP中发送端接口:
int sendto(int s