2011-09-28 25 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個字節來愉快地編碼。 –