2013-04-05 153 views
1

因此,我正在編寫一個應用程序,它通過UDP每秒發送15次5Kb數據包。我知道我會丟失一些數據包,但我似乎在頭幾秒鐘後丟失了所有數據包。即使我放慢每10秒發送一次5Kb數據包的速度,我仍然會失去它們。什麼會造成這種情況?Android UDP數據包丟失

+1

沒有看到代碼,這將很難幫助你。 – 2013-04-05 03:16:33

回答

3

它們都被丟棄並不奇怪。有效載荷bigger than 512 bytes不太可能使其脫離網絡。它取決於路由器的MTU以及在路由器上爲UDP/Internet通信分配多少帶寬。

+0

因此,如果我手動將數據包拆分爲512塊並單獨發送,即使通過發送相同數量的數據,它也能正常工作嗎?我始終認爲,數據包會自動通過您的路由器和其他路由器在到達數據包目的地的路徑上被分解爲正確的MTU大小,然後在到達目的地時重新組合。 – 2013-04-05 20:02:14

+0

是減少的有效載荷大小將有所幫助。 – 2013-04-06 06:11:40

+0

這很好用!我不得不將分組分開,然後在另一端重新組裝它們,這需要額外的額外開銷,但是它可以工作。非常感謝,我在處理UDP時多次遇到過這個問題,從未意識到這是問題所在。 – 2013-04-08 15:53:56

2

你會很幸運能得到任何大於1260字節的UDP數據報。通過路由器的UDP普遍接受的限制是534個字節,其從IPv4非分段最小值576個字節以某種方式導出。

+0

@downvoter你的解釋是? – EJP 2015-10-12 20:20:13