我有一个关于从SocketChannel
阅读的问题。假设我们有类似的东西:
SelectionKey key = //;
ByteBuffer b = ByteBuffer.allocateDirect(128);
SocketChannel ch = (SocketChannel) key.channel();
int bytesRead = ch.read(b); //returns 128
因此,在这种情况下,我无法确定是否所有 可用的 字节都从通道中读取(因为读取的字节数和缓冲区大小相同)。我需要从key
删除SelectedSet
吗?或者即使我删除,在下一个事件循环迭代中,我可以检索密钥并读取所有其余字节?
答案 0 :(得分:1)
是。如果有更多数据要读取,OP_READ将再次触发。