public int Read(ByteBuffer buffer) { if (!_socket.Poll(0, SelectMode.SelectRead)) return 0; var data = new byte[buffer.Remaining]; var length = _socket.Receive(data); if (length == 0) return -1; buffer.Put(data, 0, length); return length; }