UDP通讯协议及其相关

UDP 在使用时需要修改socket的参数 第一个任然是AF_INET 第二个需要换成SOCK_DGRAM
UDP 不需要建立连接 所以没有三次握手 和四次挥手

相同点:
    服务器:都需要绑定端口和ip
            recv与recvfrom都是阻塞的

不同点:
    服务器:不需要监听 和 接受请求
            TCP服务器默认 只能与一个客户端进行通讯 下一个客户端必须等待上一个断开连接才能被处理
            UDP 多个客户端的请求会被 依次处理 由于不需要建立连接,所以给你感觉时好像可以同时处理
    客户端:不需要建立连接 直接发送即可
            可以发送空消息

在UDP中 无论是客户端还是服务器 接受:recvfrom   发送:sendto

UDP粘包测试:

接收方的缓冲区大小即时大于发送方发送的数据长度  也不会粘包

当接收方缓冲区的长度小于数据报的长度 windows会报异常 而linux不会,缓冲区有多大就收几个

注意: UDP在使用时 必须保证接收的缓冲区大小 大于或等于 发送的数据报大小
由于缓冲区大小不可能无限大 所以UDP不适用于数据量较大的情况下,如果一定要使用UDP来传输大量数据的话
需要自己对数据进行切割,和组装

UDP最大的数据报 受数据帧大小限制  最大为1472字节

结论: 当数据量较大时 需要TCP

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值