我有一个带宽有限 512 Kbps的下载 368 Kbps的上传影响
我在循环发送40字节 UDP包在10ms的定期
与Thread.sleep(10)声明。
虽然接收分组(UDP)可以是大小0-1500字节,可以来在其中i的接收与
的channel.receive()的任何量的任何时间;在while(true){}循环.Channel处于阻止模式。
我想我缺少这个代码的数据包。
如何防止由于低速下载造成的数据包丢失。
我有一个带宽有限 512 Kbps的下载 368 Kbps的上传影响
我在循环发送40字节 UDP包在10ms的定期
与Thread.sleep(10)声明。
虽然接收分组(UDP)可以是大小0-1500字节,可以来在其中i的接收与
的channel.receive()的任何量的任何时间;在while(true){}循环.Channel处于阻止模式。
我想我缺少这个代码的数据包。
如何防止由于低速下载造成的数据包丢失。
如何防止由于低下载速度造成的数据包丢失。
你不能阻止它。即使您拥有大量带宽,某些级别的数据包丢失也是不可避免的。
如果您打算使用UDP作为您的传输,您将不得不设计您的应用协议,以便在丢包的情况下具有弹性...并避免吞吐太多流量的网络链路。这些都是不平凡的问题。
一个更简单的替代方法是使用TCP,并让它处理面对数据包丢失和流量控制问题时的重试。
40字节的UDP 100x每秒是4KB数据和大约200字节的开销,上传速度大约为46KB/s。您不应该以这些费率来解决问题,除非其他方面与您的计划竞争流量。连续爆发真的是最好的方式来做到这一点,或者你会更好地缓存数据? – Wug 2012-07-20 14:33:02
您不能防止UDP丢包,只能将其最小化。我会设计你的应用程序,使一些数据包丢失是可以接受的。 (或使用TCP) – 2012-07-20 14:40:47
40字节的数据包完全相同,只有IP和端口发生变化。 我的问题是1500字节大小不同的回复数据包。 – User1234 2012-07-20 14:41:33