我正在编写一个 NIO 服务器,并希望响应用户请求,即将一些数据写入通道。
Selector selector;
//...
if(selector.selectNow() != 0){
if(key.isReadable()){
SocketChannel channel = key.channel();
//read some data
//respond
key.interestOps(SelectionKey.OP_WRITE)
//How to add the key to a selected set?
}
}
读完一些数据后我想做出回应。这意味着我需要添加OP_WRITE
到密钥,然后将密钥添加到选定键组然后,一旦密钥出现在选定的集合中,就将一些内容写入通道。
如何将密钥显式添加到选定的集合中?
你不能。来自 Javadoc:
不能将键直接添加到选定的键集中。
您只能从中删除钥匙。
但你不需要这些。如果你想写,就写,然后当且仅当写入返回零,注册 OP_WRITE 通道并返回到选择循环。当通道变得可写时,它将自动添加到选定的键集中。您不需要等待 OP_WRITE 来执行初始写入。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)