社区
网络及通讯开发
帖子详情
UDP丢包,帮帮忙
angeling2009
2012-05-22 03:08:45
想请教一下,我用nmudp做数据接收,发送频率高的时候,接收应答就会大量丢包,由于nmudp是不是不能设置接收缓冲区?
改用idudpserver,idudpserver控件中设置的buffersize具体指什么,我需要可以设置socket的大小,谢谢!
...全文
361
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缓冲区挪到应用程序缓冲区(用独立线程做);应用程序线程再处理应用程序缓冲区中数据。
一文教你轻松排查解决,
UDP
协议
丢包
问题
小张是一名资深的网络工程师,在为公司搭建物联网数据传输系统时,选用了
UDP
协议以保证数据传输的时效性。但上线不久,系统就频繁出现数据丢失的情况。小张经过一番艰难的排查,终于找到了问题所在,并成功解决。他是怎么做到的呢?今天,就让我们跟随小张的脚步,一起学习如何排查解决
UDP
丢包
问题。
linux socket发送大量数据错乱,高分求解linux socket通信
UDP
丢包
问题
最近在做一个项目,在这之前,做了个验证程序.发现客户端连续发来1000个1024字节的包,服务器端出现了
丢包
现象.纠其原因,是服务端在还未完全处理掉数据,客户端已经数据发送完毕且关闭了.有没有成熟的解决方案来解决这个问题.我用过sleep(1),暂时解决这个问题,但是这不是根本解决办法,如果数据量大而多,网络情况不太好的话,还是有可能丢失.希望大俠
帮帮忙
啊!|有两种方法解决楼主的问题:方法一:重新...
用了TCP协议,就一定不会
丢包
吗?
数据从发送端到接收端,链路很长,任何一个地方都可能发生
丢包
,几乎可以说
丢包
不可避免。平时没事也不用关注
丢包
,大部分时候TCP的重传机制保证了消息可靠性。当你发现服务异常的时候,比如接口延时很高,总是失败的时候,可以用ping或者mtr命令看下是不是中间链路发生了
丢包
。TCP只保证传输层的消息可靠性,并不保证应用层的消息可靠性。如果我们还想保证应用层的消息可靠性,就需要应用层自己去实现逻辑做保证。最后给大家留个问题吧,mtr命令是怎么知道每一跳的IP地址的?...
用了 TCP 协议,就一定不会
丢包
吗?
数据从发送端到接收端,链路很长,任何一个地方都可能发生
丢包
,几乎可以说
丢包
不可避免。平时没事也不用关注
丢包
,大部分时候 TCP 的重传机制保证了消息可靠性。当你发现服务异常的时候,比如接口延时很高,总是失败的时候,可以用 ping 或者 mtr 命令看下是不是中间链路发生了
丢包
。TCP 只保证传输层的消息可靠性,并不保证应用层的消息可靠性。如果我们还想保证应用层的消息可靠性,就需要应用层自己去实现逻辑做保证。最后给大家留个问题吧,mtr 命令是怎么知道每一跳的 IP 地址的?参考。
面试官:用了 TCP 协议,肯定不会
丢包
假设现在,我们输入一条消息,从聊天框发出,走到传输层 TCP 协议的发送缓冲区,不管中间有没有
丢包
,最后通过重传都保证发到了对方的传输层 TCP 接收缓冲区,此时接收端回复了一个 ack,发送端收到这个 ack 后就会将自己发送缓冲区里的消息给扔掉。当接受缓冲区满了,事情就不一样了,它的 TCP 接收窗口会变为 0,也就是所谓的零窗口,并且会通过数据包里的 win=0,告诉发送端,"球球了,顶不住了,别发了"。也就是俗称的千兆网卡,但注意这里的单位是 Mb,这里的 b 是指 bit,而不是 Byte。
网络及通讯开发
1,317
社区成员
8,874
社区内容
发帖
与我相关
我的任务
网络及通讯开发
C++ Builder 网络及通讯开发
复制链接
扫一扫
分享
社区描述
C++ Builder 网络及通讯开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章