如何解决udp丢包问题

 时间:2024-10-13 16:46:43

1、主要丢包原因:接收端处理时间过长导致丢包:调用recv方法接收端收到数据后,处理数据花了一些时间,处理完后再次调用recv方法,在这二次调用间隔里,发过来的包可能丢失。对于这种情况可以修改接收端,将包接收后存入一个缓冲区,然后迅速返回继续recv。

如何解决udp丢包问题

2、发送的包巨大丢包:虽然send方法会帮你做大包切割成小包发送的事情,但包太大也不行。例如超过50K的一个udp包,不切割直接通过send方法发送也会导致这个包丢失。这种情况需要切割成小包再逐个send。

如何解决udp丢包问题

3、发送的包较大,超过接受者缓存导致丢包:包超过mtu size数倍,几个大的udp包可能会超过接收者的缓冲,导致丢包。这种情况可以设置socket接收缓冲。以前遇到过这种问题,我把接收缓冲设置成64K就解决了。

如何解决udp丢包问题

4、发送的包频率太快:虽然每个包的大小都小于mtu size 但是频率太快,例如40多个mut size的包连续发送中间不sleep,也有可能导致丢包。这种情况也有时可以通过设置socket接收缓冲解决,但有时解决不了。所以在发送频率过快的时候还是考虑sleep一下吧。

如何解决udp丢包问题

5、局域网内不丢包,公网上丢包。这个问题我也是通过切割小包并sleep发送解决的。如果流量太大,这个办法也不灵了。

如何解决udp丢包问题

6、总之udp丢包总是会有的,如果出现了用我的方法解决不了,还有这个几个方法: 要么减小流量,要么换tcp协议传输,要么做丢包重传的工作。

如何解决udp丢包问题
  • Hyper-V怎么使用
  • windows关机命令
  • EXSi主机如何安装补丁
  • 如何使用组策略在 Win 10 中禁用截图工具
  • NAS登陆前的两步骤认证
  • 热门搜索
    爱眼日手抄报 传统节日手抄报 红领巾心向党手抄报 四年级数学手抄报 英语手抄报图片 清明节手抄报图片 三年级手抄报 端午节手抄报图片大全 英文手抄报 爱国主义手抄报