UDP
在使用socket时需要手动传入两个参数
第一个 AF_INET,第二个 SOCK_DGRAM
UDP 不需要建立连接,所以没有三次握手和四次挥手
UDP与TCP的相同点:
服务器:都需要绑定端口和ip
recv与recvfrom都有阻塞功能
UDP与TCP的不同点:
服务器:UDP不需要监听和接受请求
TCP服务器默认只能和一个客户端进行通讯
下一个客户端必须等到上一个断开连接才能被处理
UDP多个客户端的请求会被依次处理
客户端:不需要建立连接直接发送即可
可以发送空消息
在UDP中客户端和服务器
接收都是recvfrom
发送都是sendto
UDP不会产生粘包问题
接收方的缓冲区大小即使大于发送方发送的数据长度也不会粘包
当接收方缓冲区的程度小于数据报的数据长度,Windows会报异常,而Linux不会
UDP在使用时,必须保证接收的缓冲区大小大于或等于发送的数据报大小
由于缓冲区的大小不可能无限大,所以UDP不适合在数据量较大的情况下使用
如果一定要使用UDP来传输大量数据的话,需要自己对数据进行切割和组装
UDP最大的数据报,受数据帧大小限制,最大为1472字节
在传输数据量较大时推荐使用TCP