我有一個帶寬有限 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