Проблема с Java Socket, буфер получает два пакета одновременно. - PullRequest
0 голосов
/ 29 марта 2011

Я использую Java Socket API для связи. Но иногда я получаю пакет в одном пакете. Как я могу избежать того же. Есть ли способ разрешить то же самое в Java NIO или Java NIO 2. Я уверен, что пакеты приходят отдельно. Но оба хранятся в одном буфере.

Обратите внимание, что здесь Packet - это не что иное, как логическое разделение данных. Данные отправляются сторонней системой. Они отправляют по одному. Но я получаю два пакета одновременно.

1 Ответ

4 голосов
/ 29 марта 2011

Это способ, которым он должен работать.TCP использует пакеты для передачи данных, но это не видно из высокоуровневого API сокетов: вы открываете выходной поток и отправляете столько данных, сколько хотите.Эти данные разбиваются на пакеты с помощью стека протоколов TCP / IP.А на принимающей стороне вы открываете входной поток и получаете данные, не зная, что они разбиты на пакеты.

Если вам нужны два пакета уровня приложения, то разработайте протокол передачи с использованием разделителей между пакетами.или фрагменты данных фиксированного размера, или что-либо еще, чтобы различать, что является частью логического пакета, а что - частью следующего.

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