Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JavaNIO中注销并重新注册_Java_Nio - Fatal编程技术网

在JavaNIO中注销并重新注册

在JavaNIO中注销并重新注册,java,nio,Java,Nio,是否可以取消注册,然后稍后使用同一选择器再次注册? 我必须限制我接受的连接数量并执行key.cancel()以停止接收OP_accept事件 server.register(selector, SelectionKey.OP_ACCEPT); ... key.cancel() ... 如果连接已关闭,我无法再次运行寄存器(..),从而获得 java.nio.channels.CancelledKeyException Javadoc for register(..):如果此通道当前已使用给定选

是否可以取消注册,然后稍后使用同一选择器再次注册? 我必须限制我接受的连接数量并执行key.cancel()以停止接收OP_accept事件

server.register(selector, SelectionKey.OP_ACCEPT);
...
key.cancel()
...
如果连接已关闭,我无法再次运行寄存器(..),从而获得 java.nio.channels.CancelledKeyException

Javadoc for register(..):如果此通道当前已使用给定选择器注册,但相应的键已被取消,则抛出CanceledKeyException


实现我要做的事情的方法是什么?

只需在键的
interesttops
中清除要清除的位:例如
key.interesttops(0)

您能给我们展示更多的代码吗?听起来你好像忘记了重新注册频道。这就是我最后要做的,有没有办法在不关闭当前已接受的连接的情况下关闭频道并让连接尝试以“连接被拒绝”结束?当然,只需关闭ServerSocket/ServerSocketChannel。它不会影响已接受的连接。