我有一個android應用程序需要通過協議UDP每100毫秒發送一次數據。每個UDP數據包平均有15000字節。數據包以廣播形式發送按順序發送大型UDP數據包的最佳方法
下面的每個100毫秒的行都通過循環運行。
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, broadcast, 9876);
clientSocket.send(sendPacket);
應用程序啓動時工作正常,但之後收到的數據包約1分鐘的頻率減小,直到數據包不會在到達目的地。
理論極限(在Windows上)對於UDP數據包的最大尺寸爲65507個字節
我知道網絡的媒體MTU是1500個字節,當我發送一個數據包越大它被分解成幾個片段如果一個片段沒有到達目的地,那麼整個包就會丟失。
我不明白爲什麼最初1分鐘的數據包發送正確,過了一段時間數據包不會到達更多。所以我想知道解決這個問題最好的辦法是什麼?
BTW碎片也可能無序到達。 ;) –
我認爲TCP不是一個選項? –
我正在發送圖片,如果我失去了一些30%的數據包不會成爲問題。在這種情況下,tcp較慢並不是一個好主意。我的問題是所有數據包在一段時間後都會丟失。謝謝 –