mio*_*rel 7 java connection timeout nio
使用非阻塞I/O,连接到远程地址的代码如下所示:
SocketChannel channel = SelectorProvider.provider().openSocketChannel();
channel.configureBlocking(false);
channel.connect(address);
Run Code Online (Sandbox Code Playgroud)
然后,finishConnect()当某个选择器显示相应的键时,必须通过调用通道来完成连接过程isConnectable().
有没有办法在使用这个成语时指定连接超时?
有趣的问题。我不确定nio本身是否提供了解决方案。
根据我的经验,我运行了一个 Callable 来尝试连接,然后使用 Future 来轮询响应,使用“间隔”和“超时”变量进行循环,并使用 Thread.sleep() 进行响应。
希望这能为您指明一个有用的方向......
另外,我建议您看一下 Apache Mina(您可以将 Mina 描述为 nio 框架)。它为您处理很多此类内容,例如在 StreamIoHandler http://mina.apache.org/report/trunk/apidocs/org/apache/mina/handler/stream/StreamIoHandler.html中