ServerSocketChannel
используется следующим образом:
ServerSocketChannel srv = ServerSocketChannel.open();
srv.socket().bind(new java.net.InetSocketAddress(8112));
SocketChannel client = srv.accept();
При получении соединения данные читаются следующим образом:
ByteBuffer data = ByteBuffer.allocate(2000);
data.order(ByteOrder.LITTLE_ENDIAN);
client.read(data);
logger.debug("Position: {} bytes read!", data.position());
Он печатает:
Позиция: 16 байтов прочитано!
Почему SocketChannel не блокируется, пока буфер не заполнится?
Из ServerSocketChannel.accept()
API (Java 7):
Канал сокета, возвращаемый этим методом, если он есть, будет в
режим блокировки независимо от режима блокировки этого канала.
Блокирует ли write(ByteBuffer buffer)
SocketChannel? Как мне это проверить?
Спасибо за ваше время!