Как преобразовать входной поток TCP в байтовый массив данных UPD? - PullRequest
0 голосов
/ 07 декабря 2011

У меня есть строка для преобразования в поток, который я использую

outputStream.write(string.getBytes(Charset.forName("UTF-8")));

и отправляю через сокет TCP, а затем сервер преобразует этот поток в байтовый массив и отправляет в сокет UDP.Проблема в том, что размер оригинальной строки варьируется, и я не хочу определять размер байтового массива.Что наиболее оптимизированный способ сделать позже.

1 Ответ

0 голосов
/ 07 декабря 2011

При отправке байтового массива в сокет UDP, пусть первый байт будет длиной строки, которую вы отправляете.Недостатком является то, что вы можете отправить только от 0 до 255 байтов.Я не знаю о Java, но вы можете получить младшие 8 битов длины и отправить в качестве первого байта, а старшие 8 битов в качестве второго байта, тогда вы можете отправить от 0 до 65535 байтов.

Другая программа, которая читает из сокета UDP, конечно, должна прочитать первые один или два байта и построить из них целое число.Затем он знает длину и может прочитать точное количество байтов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...