2017-08-12 73 views
0

我有一个关于从SocketChannel读取的问题。假设我们有这样的事情:我应该从SelectedSet中删除SelectionKey吗?

SelectionKey key = //; 
ByteBuffer b = ByteBuffer.allocateDirect(128); 
SocketChannel ch = (SocketChannel) key.channel(); 
int bytesRead = ch.read(b); //returns 128 

因此,在这种情况下,我无法知道,如果从通道读取所有可用字节(因为字节读取和缓冲区的大小是一样的)。那么我需要从SelectedSet删除key?或者即使我删除,在下一个事件循环迭代中,我可以检索密钥并读取所有剩余字节?

回答

1

是的。如果有更多的数据要读取,OP_READ将再次触发。

相关问题