У меня есть пакеты, которые отправляются на розетки, которым предшествуют заголовки длины. Таким образом, каждая передача поставляется с 4 байтами информации длины, за которой следует пакет. Поэтому я должен ограничить свой read () < /code> никогда не превышать длину, чтобы я случайно не читал следующий пакет в очереди. < /P>
- это поток ввода, BytearRayoutputStream Bytestream - это поток, который я пишу входящие пакеты, и int len - длина входящей передачи.
Вот что я придумал: < /p>
for (int i = 0; i < len; i++) {
byteStream.write(in.read());
}
< /code>
Это абсолютно ужасно; Чтение байтов один за другим. Я надеялся посмотреть, есть ли лучший способ сделать это с использованием буферов (вроде как канонический способ копирования потоков).
Подробнее здесь:
https://stackoverflow.com/questions/200 ... put-stream