当前位置:首页 >  数码看看

udp在什么情况下会丢包

时间:2024-09-25 15:00:35

数码看看

导读:udp丢包原因分析及总结 1. 调用recv方法接收端收到数据后,处理数据花了一些时间,处理完后再次调用recv方法,在这二次调用间隔里,发过来的包可能丢失。对于这种......

udp原因分析及总结

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

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

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

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

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
联系我们 关于我们 版权申请

观察网 广州东远堂信息科技有限公司 版权所有 粤ICP备15011623号