我有一个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较慢并不是一个好主意。我的问题是所有数据包在一段时间后都会丢失。谢谢 –