I’m trying to send a UDP datagram (containing a protocol buffers message) and getting message too long exceptions:
java.io.IOException: Message too long
at java.net.PlainDatagramSocketImpl.send(Native Method)
at java.net.DatagramSocket.send(DatagramSocket.java:625)
I’ve set the send buffer size, and checked the return value from getBufferSize(), and it’s larger than the message:
byte[] b = msg.toByteArray();
System.out.println( "Serialised message in " + b.length + " bytes (max length: " + network.getSendBufferSize() + ")");
DatagramPacket p = new DatagramPacket( b, b.length, host, port );
network.send( p );
Outputs:
VM version: 16.3-b01-279
Runtime version: 1.6.0_20-b02-279-9M3165
Vendor: Apple Inc.
Serialised message in 69424 bytes (max length: 531075)
Problem sending packet: java.io.IOException: Message too long
I could understand if it was refusing to set a large sized buffer, but it seems to be setting whatever I ask, and then not honoring it.
This is on OSX; I’ve tried both with 1.6 and 1.5
UDP datagrams can’t be larger than 64K