2016-11-23 2 views
1

Если у меня есть два подключения к серверу, которые требуют нескольких чтений на канале для завершения пакета, как я узнаю, какой из них прочитал, с каким пакетом?Как собрать пакеты с гнездами Java NIO

, например, два пакета, которые получены в виде четырех перемежающихся буферов:

  • PacketA буфера часть1
  • PacketB буфера часть1
  • PacketA буфера часть2
  • PacketB буфера часть2

The первая часть МОЖЕТ иметь заголовок, но вторая часть может прибыть как разделенная в любом месте пакета.

При получении частичного пакета, как узнать, в каком буфере идет где?

Я собираюсь создать карту, чтобы связать каждый объект канала с соответствующим выходным буфером, который будет удерживать повторно собранный пакет. Так ли это должно быть сделано?

ответ

1

Действительно, типичной практикой является наличие отдельных буферов для каждого канала. Вам не обязательно нужна карта. Вы могли бы attach extra information каждому SelectionKey. Каждый ключ может содержать объект по вашему выбору, который ваш код может получить позже. Это удобное место для хранения буфера или набора буферов.

Смежные вопросы