Дополнительные байты, полученные DatagramPacket - PullRequest
0 голосов
/ 28 сентября 2011

У меня проблема, с которой я сталкиваюсь впервые, я использую java DatagramSocket (s) для отправки и получения данных в моем приложении.

вот как я отправляю данные:

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

теперь, когда я отправлял буфер byt [], его размер был 275. но когда я получил пакет в принимающем приложении и получил байт [] от receivePacket, вот так:

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

Я обнаружил, что количество полученных байтов составляет 278 байтов, то есть дополнительные 3 байта.

Может показаться, что это не большая проблема, но на самом деле это для меня, пожалуйста, укажите, почему это происходит, и как ее решить, было бы полезно любое логическое объяснение.

спасибо

1 Ответ

0 голосов
/ 28 сентября 2011

3 дополнительных байта могут быть маркером длины.Я знаю, что когда я делаю сокеты в C / C ++, я обычно выделяю первые 4 байта для отправки длины моего сообщения, а затем использую эти данные, чтобы определить, сколько нужно прочитать, чтобы прочитать все сообщение.

...