Java (Mac) & amp; C ++ (windows) Tcp Соединение и отправка & amp; recv message [duplicate]

Это означает, что вы пытаетесь манипулировать тем, что имеет ссылку, но еще не инициализировано. Первое, что нужно сделать, это проверить каждый созданный экземпляр. Используйте контрольные точки, часы, проверяйте свои значения varibale. Следить за трассировкой стека и искать точные строки и столбцы, которые создают проблему

9
задан user207421 3 October 2011 в 06:03
поделиться

2 ответа

Вывод DataOutputStream.writeUTF() - это настраиваемый формат, предназначенный для чтения DataInputStream.readUTF().

javadocs метода writeUTF, который вы вызываете, говорят:

Записывает строку в базовый выходной поток с использованием модифицированной кодировки UTF-8 машинным образом.

Во-первых, два байта записываются в выходной поток, как если бы метод writeShort выдавал количество байтов. Это значение представляет собой количество фактически выписанных байтов, а не длину строки. По длине каждый символ строки выводится последовательно, используя модифицированную кодировку UTF-8 для символа. Если исключение не выбрасывается, счетчик written увеличивается на общее количество байтов, записанных в выходной поток. Это будет как минимум два плюс длина str, и не более двух плюс трижды длина str.

21
ответ дан user207421 26 August 2018 в 14:19
поделиться

При чтении и записи данных всегда используйте один и тот же тип потока. Если вы подаете поток непосредственно в парсер сакса, то вы не должны использовать DataOutputStream.

Просто используйте

BufferedOutputStream bos = new BufferedOutputStream(socket.getOutputStream());
bos.write(os.getBytes("UTF-8"));
14
ответ дан MeBigFatGuy 26 August 2018 в 14:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: