删除无响应的频道 - java

Delete Unresponsive channels - java

我的问题是如何从 selector 中删除在给定时间内没有响应的主机。

假设,我在 select 或 OP_CONNECT 中注册了 1 个频道。通道处于非阻塞模式。我添加的主机我知道它没有响应,所以我的程序无法连接,并且 selector 的 select() 方法将始终 return 0。现在,我怎么能使用 select(超时)并删除没有响应的主机?

主机ping输出:

25 packets transmitted, 0 received, 100% packet loss, time 24000ms

关闭相关频道即可。这将自动取消他们所有的 SelectionKeys 并将他们从相关 Selector(s) 的权限中移除。

但是我个人看不出 NIO 或客户端非阻塞模式的意义。