我正试图实施NIO服务器并且有一个关于SelectionKey
的问题。假设我们提取了一些准备好读取的密钥。就像这样:从选择器中删除密钥
SelectionKey key;
//...
SocketChannel c = (SocketChannel) key.channel;
//read from c
但是我们从通道读取的是不足以使一个完整的Packet
。所以我附加了一些对象到key
。
问:什么时候应该从Selector
中删除key
?当我读完整Packet
?或者每当我重新注册频道时,请删除Selector
中的密钥,并将接收到的数据重新附加到新注册的SelectionKey
?