У меня есть следующий код для отправки пакета ...
sendSocket = new DatagramSocket(new InetSocketAddress (InetAddress.getByName (prefs.get ("interfaceIP", Defaults.defaultInterfaceIP)), 0));
log.debug ("length = " + responsePacket.getLength ());
sendPacket = new DatagramPacket (responsePacket.getData (), responsePacket.getLength (), this.deviceHostAddress, prefs.getInt ("port", Defaults.defaultPort));
sendSocket.send (sendPacket);
Данные, которые я пытаюсь отправить, имеют длину 3527 байт (из строки log.debug), и по какой-то причине при просмотре пакета на Wireshark я вижу, что пакет «фрагментирован» и что только 1480 байт были послал. Для меня это было бы нормально, поскольку пакет должен помещаться в MTU. Однако я не вижу остальной части данных, поступающих в последующих пакетах (и, следовательно, соединяемых на основе идентификаторов пакетов).
Есть идеи, почему DatagramSocket.send отправляет только первый фрагмент, а не остальные?