Укажите тайм-аут соединения в java.nio

Используя неблокирование ввода-вывода, код для соединения с удаленным адресом смотрит что-то как:

SocketChannel channel = SelectorProvider.provider().openSocketChannel();
channel.configureBlocking(false);
channel.connect(address);

Процесс соединения должен будет затем быть закончен путем вызова finishConnect() на канале, когда некоторый селектор говорит соответствующий ключ isConnectable().

Существует ли способ указать тайм-аут соединения при использовании этой идиомы?

7
задан miorel 1 April 2010 в 21:53
поделиться

1 ответ

Интересный вопрос. Я не уверен, что сам nio предлагает решение.

По моему опыту, я запустил Callable, чтобы попытаться установить соединение, а затем использовал Future для опроса ответа, используя переменные interval и timeout для цикла и Thread.sleep () для ответа.

Надеюсь, это укажет вам полезное направление ...

Также я предлагаю вам взглянуть на Apache Mina (вы могли бы описать Mina как фреймворк nio). Он выполняет для вас много такого рода вещей, например, в StreamIoHandler http://mina.apache.org/report/trunk/apidocs/org/apache/mina/handler/stream/StreamIoHandler.html

0
ответ дан 8 December 2019 в 01:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: