
Код:
Может еще что-то можете предположить?
Угу. Размер пакета вычисляется неправильно на стороне сервера. Правильный размер 1 + 1 + (2 + 4 * 1) = 8 байт. Формат записи writeUTF описан в
javadoc.
А вообще порекомендую еще не руками вычислять размер "сообщения", а формировать сообщение и брать его размер.

Код:
final ByteArrayOutputSteram baos = new ByteArrayOutputStream();
final DataOutput dos = new DataOutputStream(baos);
writeMessage(daos);
dos.close();
final byte[] message = baos.toByteArray();
sos.writeByte(message.length);
sos.write(message);
Вот как-то так. Писал по памяти, но идея там верная.
Цитата:
|
Каждый раз, когда что-то пришло, я вызывал проверку на то, что socket.available != 0 и считывал 1 байт(чтобы факт считывания был).
|
Учтите, что socket.read изменяет socket.available! Ну и вообще моя идея была не верна, все приходит нормально, у вас в длине наврано.
И на будущее рекоменду в случае проблем трейсить также и все приходящие (считываемые) данные. Вы бы заметили, что пакет меньше, чем написано.