社区
网络及通讯开发
帖子详情
UDP丢包,帮帮忙
angeling2009
2012-05-22 03:08:45
想请教一下,我用nmudp做数据接收,发送频率高的时候,接收应答就会大量丢包,由于nmudp是不是不能设置接收缓冲区?
改用idudpserver,idudpserver控件中设置的buffersize具体指什么,我需要可以设置socket的大小,谢谢!
...全文
420
7
打赏
收藏
UDP丢包,帮帮忙
想请教一下,我用nmudp做数据接收,发送频率高的时候,接收应答就会大量丢包,由于nmudp是不是不能设置接收缓冲区? 改用idudpserver,idudpserver控件中设置的buffersize具体指什么,我需要可以设置socket的大小,谢谢!
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
☆钱多多☆
2012-09-23
打赏
举报
回复
帮顶,虚心学习
lobtao
2012-05-27
打赏
举报
回复
使用tcp吧,稳定连接
CCED136
2012-05-26
打赏
举报
回复
在目前国内互联网环境下, 通常 UDP 掉包的情况还是比较少的, 一般都会在 3% 以下。 所以,确保 UDP 收发数据正常,更多的应该是在你的程序里面控制。 加上 UDP 是无连接的通讯, 需要你自己处理 UDP 包的掉包、错包等问题, 然后自己安排重发。
土著巫师
2012-05-25
打赏
举报
回复
建议使用ICS组件,用了N年了,从来没发现过UDP丢包的情况,在LAN里有丢包,那一定是你代码上有问题,与UDP协议可靠不可靠没关系。
我不懂电脑
2012-05-24
打赏
举报
回复
idudpserver不是有buffer吗
angeling2009
2012-05-23
打赏
举报
回复
[Quote=引用 1 楼 的回复:]
udp 本身就是不可靠的,会丢包。
接收效率要高于发送才能少丢包。
改用tcp 可靠连接,可以不丢包;
buffersize 指缓冲区大小,缓冲区满放不进数据,你需要建立应用程序缓冲区(链表),把收到的数据快速从udp缓冲区挪到应用程序缓冲区(用独立线程做);应用程序线程再处理应用程序缓冲区中数据。
[/Quote]
buffersize设为32k就足够我用了,但不知道idudpserver这个控件是否支持?
mabaoyes
2012-05-23
打赏
举报
回复
udp 本身就是不可靠的,会丢包。
接收效率要高于发送才能少丢包。
改用tcp 可靠连接,可以不丢包;
buffersize 指缓冲区大小,缓冲区满放不进数据,你需要建立应用程序缓冲区(链表),把收到的数据快速从udp缓冲区挪到应用程序缓冲区(用独立线程做);应用程序线程再处理应用程序缓冲区中数据。
【Socket】解决
UDP
丢包
问题
UDP
是一种不可靠的、无连接的、基于数据报的传输层协议。相比于TCP就比较简单,像写信一样,直接打包丢过去,就不用管了,而不用TCP这样的反复确认。所以
UDP
的优势就是速度快,开销小。
面试:TCP、
UDP
如何解决
丢包
问题
TCP、
UDP
如何解决
丢包
问题。TCP:基于数据块传输/数据分片、对失序数据包重新排序以及去重、流量控制(滑动窗口)、拥塞控制、自主重传ARQ;
UDP
:程序执行后马上开始监听、控制报文大小、每个分割块的长度小于MTU
UDP
解决
丢包
问题总结
收包率低/
丢包
率高的原因分析 (1) 缓存太小,不能及时接收数据。 连续多个
UDP
包超过了
UDP
接收缓冲区大小 ,比如: 如:
UDP
包过大 如:
UDP
发包速率过快,突发大数据流量超过了缓冲区上限 (2)recvfrom()接收到数据之后处理速度太慢 如果数据接收和处理是连续进行的,那么可能由于数据处理过慢,两次recvfrom调用的时间间隔里发过来的包丢失 对应的解决方法 UD...
网络及通讯开发
1,317
社区成员
8,874
社区内容
发帖
与我相关
我的任务
网络及通讯开发
C++ Builder 网络及通讯开发
复制链接
扫一扫
分享
社区描述
C++ Builder 网络及通讯开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章