2011-09-28 35 views
0

收到的其他字节我有我看到有史以来第一次一个问题,我用java DatagramSocket类(个),发送和我的应用程序接收数据。由DatagramPacket的

我这是怎么发送数据:

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

现在,当我发出的BYT []缓冲区,它的大小是275 但是当我收到关于接收应用的数据包,并得到了字节[ ]从receiverPacket,像这样:

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

我发现接收到的字节计数,其中278个字节这是额外的3个字节。

这似乎是没有什么大问题,但实际上这是对我来说,请任何想法,为什么会出现这种情况,如何解决它,任何合理的解释将是有益的。

谢谢

+0

你可以运行一个工具,如tcpdump的,看看到底发生了跨线走向何方?知道这些额外的字节是否出现在发送端或接收端会很有用。 –

+0

我没有看到任何代码确定数据包的长度。 – EJP

回答

0

3个额外的字节可能是一个长度标记。我知道,当我在C/C++做插座,我通常奉献前4个字节在发送我的消息的长度,然后我使用该数据以确定有多少以读取整个消息阅读。

+1

它不应该被神奇地增加长度标记(或任何其他为此事)。 3个字节将是在任何情况下,长度标记奇怪大小,因为UDP包被限制为65536个字节,因此长度可在2个字节来愉快地编码。 –