在JavaNIO中注销并重新注册
是否可以取消注册,然后稍后使用同一选择器再次注册? 我必须限制我接受的连接数量并执行key.cancel()以停止接收OP_accept事件在JavaNIO中注销并重新注册,java,nio,Java,Nio,是否可以取消注册,然后稍后使用同一选择器再次注册? 我必须限制我接受的连接数量并执行key.cancel()以停止接收OP_accept事件 server.register(selector, SelectionKey.OP_ACCEPT); ... key.cancel() ... 如果连接已关闭,我无法再次运行寄存器(..),从而获得 java.nio.channels.CancelledKeyException Javadoc for register(..):如果此通道当前已使用给定选
server.register(selector, SelectionKey.OP_ACCEPT);
...
key.cancel()
...
如果连接已关闭,我无法再次运行寄存器(..),从而获得
java.nio.channels.CancelledKeyException
Javadoc for register(..):如果此通道当前已使用给定选择器注册,但相应的键已被取消,则抛出CanceledKeyException
实现我要做的事情的方法是什么?只需在键的
interesttops
中清除要清除的位:例如key.interesttops(0)
您能给我们展示更多的代码吗?听起来你好像忘记了重新注册频道。这就是我最后要做的,有没有办法在不关闭当前已接受的连接的情况下关闭频道并让连接尝试以“连接被拒绝”结束?当然,只需关闭ServerSocket/ServerSocketChannel。它不会影响已接受的连接。