DatagramPacket接收的附加字节

时间:2011-09-28 02:07:38

标签: java sockets udp datagram

我有一个问题,我第一次看到,我正在使用java DatagramSocket在我的应用程序中发送和接收数据。

这是我发送数据的方式:

byte[] buffer = "my data".getBytes();
senderPacket = new DatagramPacket(buffer, 0, buffer.length, remoteAddress, remotePort);
socket.send(senderPacket);

现在当我发送byt []缓冲区时,它的大小是275。 但是当我在接收应用程序上收到数据包并从receiverPacket获取byte []时,就像这样:

buffer = new byte[2048];
receiverPacket = new DatagramPacket(buffer, buffer.length);
socket.receive(receiverPacket);

我发现接收到的字节计数在278个字节的附加3个字节。

这似乎不是一个大问题,但实际上对我来说,请知道为什么会发生这种情况,以及如何解决它,任何合理的解释都会有所帮助。

感谢

1 个答案:

答案 0 :(得分:0)

3个额外字节可以是长度标记。我知道当我在C / C ++中使用套接字时,我通常会将前4个字节用于发送消息的长度,然后我使用该数据来确定读取整个消息的读取量。