以前UDP不怎么丢包,突然好像之间丢包比较严重了

ak911 2008-04-01 07:00:45
s:string;
IdUDPClient1.SendBuffer('192.168.0.1',22222,s[1],length(s)); //向服务器1发送
IdUDPClient1.SendBuffer('192.168.0.2',22222,s[1],length(s)); //向服务器2发送

在内网客户机和服务器之间使用Indy UDP传输数据,以前传输的数据s长度大约在50~100个字符,几乎没有出现过丢包现象(或者是我没发现)
现在s的长度增加到几千,不过应该还没有上万的。。。
丢包现象开始变的有点严重了,有的时候客户机发了几次服务器也没有收到(30~60秒发送1次),有的时候同一个数据包服务器1收到了服务器2没收到,或者服务器2收到了服务器1没收到,要么就是两台服务器都没收到
客户机的client buffersize是默认的8192,服务器的server buffersize也是默认的8192
内网都是直接用HUB或者Switch连接的,网络状况应该还是比较良好的
这种情况会是什么原因造成的啊?
...全文
351 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
SQLDebug_Fan 2011-07-21
  • 打赏
  • 举报
回复
是不是可以改为用TCP呢,TCP可以保证包是顺序而且不丢包,UDP通讯需要做发包确认。
xiaocongzhi 2011-07-21
  • 打赏
  • 举报
回复
包变长了也更容易受到干扰了,丢包更严重很正常,再加上网络设备自身性能的一些限制,对长包的传输也会比较吃力
funxu 2011-07-04
  • 打赏
  • 举报
回复
采用应答模式 1.定义包头标明长度,如果数据重要,甚至可以放入校验码 2.超时重发 3单次包发送长度同2L
halleyzhang 2011-07-01
  • 打赏
  • 举报
回复
加大缓冲区试试
jtnetcom 2008-04-23
  • 打赏
  • 举报
回复
udp丢包问题,我们摸索过近一年的时间:在局域网内,编程合适,可以做到一个字节也不丢,不论包的大小。理论上udp包不能大于64K字节。
oushengfen 2008-04-01
  • 打赏
  • 举报
回复
UDP丢包是很正常的事情吧,网络设备也会引起丢包啊.
ideation_shang 2008-04-01
  • 打赏
  • 举报
回复
无论局域网还是互联网,Udp也是会丢包的,只是几率问题。内外可以不用考虑MTU。简单的应用只要做丢失检测,数据分包,组包就可以了,就是等停应答方式。如果是要控制速度,必须要加滑窗算法来控制。
ak911 2008-04-01
  • 打赏
  • 举报
回复
只是在内网使用,没有Modem和Route是不是就可以不考虑MTU了?

组包还没研究过,不过当初也就是为了简便而使用UDP的。。。。
僵哥 2008-04-01
  • 打赏
  • 举报
回复
而且这个MTU指的是部分设备。建议楼主进行拆包,当然麻烦是需要重组。
僵哥 2008-04-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yangsf004 的回复:]
包的长度最好不要超过1K
[/Quote]
没说不能超过1k,只是考虑到MTU的限制,最好不要超过1500.
yangsf004 2008-04-01
  • 打赏
  • 举报
回复
包的长度最好不要超过1K

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧