При использовании SocketChannel вам необходимо сохранить буферы чтения и записи для обработки частичной записи и чтения.
У меня есть подозрение, что оно может не понадобиться при использовании DatagramChannel, но информации недостаточно.
Что это за история?
Должен ли я вызывать (неблокирующее) получение (ByteBuffer) несколько раз, пока не получу нулевое значение для чтения всех ожидающих дейтаграмм?
При отправке в неблокирующем режиме могу ли я положиться на send (ByteBuffer, SocketAddress) для отправки всего буфера или полного его отклонения, или мне нужно, возможно, сохранить частично записанные буферы?