UDP传输数据包丢失,如何解决

chaoliu1024 2013-05-27 06:01:36
遇到一点问题:
UDP是不可靠传输,进行数据传递时,会有数据包丢失。我们已经做了重传机制,在有数据包丢失后,进行传输。
但是还有问题,刚开始使用时,传输比较稳定,用了一段时间后,就有发送失败的情况,重传后也不能发送,然后把路由器断电重新开始后,又稳定了。我们分析是数据包发送多后,造成网络堵塞。或者我们分析是错误的,可能是其他情况导致数据包丢失。
想请教各位下,UPD的数据包有生命周期吗?能不能接收到后,就把数据包kill掉?
...全文
1303 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
lcf 2013-05-30
  • 打赏
  • 举报
回复
UDP+重传+自主流量控制,这已经是90%接近TCP了,你说你何必呢
冰思雨 2013-05-30
  • 打赏
  • 举报
回复
UDP发送数据,应该也要讲究 流量控制 ,你应该想办法让程序感应到网络的通畅情况,优化传递的数据。
chaoliu1024 2013-05-29
  • 打赏
  • 举报
回复
引用 9 楼 shine333 的回复:
你们UDP发送的时候是并发发送的吗?
不是并发传送的,不过传送是个while循环,时间间隔非常短
haohai08 2013-05-28
  • 打赏
  • 举报
回复
设计UDP的初衷之一是留给上层更多的发挥空间,同时又保持性能。 UDP只是IP的简单封装
BadPattern 2013-05-28
  • 打赏
  • 举报
回复
引用 12 楼 beiouwolf 的回复:
话说...这需求真操蛋... 需要保证数据完整传输的就用TCP... 既然知道UDP不保证传输,还给加个重传机制... 这得多无聊的人才能想出这么个无聊的办法啊...
是啊,UDP一般用于要求及时性而不是准确性的场合,你非自己给自己找麻烦
beiouwolf 2013-05-28
  • 打赏
  • 举报
回复
话说...这需求真操蛋... 需要保证数据完整传输的就用TCP... 既然知道UDP不保证传输,还给加个重传机制... 这得多无聊的人才能想出这么个无聊的办法啊...
  • 打赏
  • 举报
回复
UDP传输数据包丢失,这是udp协议明确告诉你的
蝴蝶Poj 2013-05-28
  • 打赏
  • 举报
回复
一般游戏开发用到UDP,UDP传送之后 数据不会放回一个数据包。无法进行控制。
shine333 2013-05-28
  • 打赏
  • 举报
回复
你们UDP发送的时候是并发发送的吗?
GetSet_LV 2013-05-28
  • 打赏
  • 举报
回复
用TCP进行响应,如果客户端有响应就用UDP发数据,间隔时间里做个标识,下次无法响应,数据就返回标识处,连上之后再重发.估计性能很差..
冰思雨 2013-05-28
  • 打赏
  • 举报
回复
应该是两个方面的原因,一个是 重传机制 可能有Bug,造成发送数据量达到某一峰值时,无法继续发送。 另一个是 MTU 和 UPD的报文长度 有冲突,造成传输不稳定。
wo111180611 2013-05-27
  • 打赏
  • 举报
回复
UDP自身特点限制...
lcf 2013-05-27
  • 打赏
  • 举报
回复
不过如果你的UDP有重传机制,仍然丢包,那就是你的重传逻辑有问题
gaojava 2013-05-27
  • 打赏
  • 举报
回复
用UDP还做了重传机制???即使在程序上做到了,你也无法控制操作系统啊
gaojava 2013-05-27
  • 打赏
  • 举报
回复
UDP无法避免丢包问题!可靠传输用TCP
fei1710 2013-05-27
  • 打赏
  • 举报
回复
网络带宽太小的原因?
lcf 2013-05-27
  • 打赏
  • 举报
回复
如果你想降低丢包率,那你只能传慢一些了
七神之光 2013-05-27
  • 打赏
  • 举报
回复
UDP不保证报文都是正确的
oh_Maxy 2013-05-27
  • 打赏
  • 举报
回复
为啥不用TCP呢?

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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