Как установить время ожидания вызова socket.connect ()?

У меня есть приложение, которое подключается к хосту, который может не работать. Если хост не работает, я не хочу ждать около 30 секунд до истечения времени ожидания. Сейчас использую блокирующие сокеты.

Я смотрел socket.poll () и socket.select (), но я бы предпочел просто установить время на сокете. Я не возражаю, если мне нужно будет выполнить эту настройку где-нибудь в системе. Кроме того, я, кажется, понял, что опрос и выбор не работают при общении с установлением соединения - это правильно?

Если это абсолютно невозможно, как лучше всего получить желаемые результаты с помощью опроса, выбора или какой-либо другой техники?


person Niklas Winde    schedule 19.01.2009    source источник


Ответы (1)


См. BeginConnect и Обзор асинхронного программирования

IAsyncResult asr = socket.BeginConnect( ip, port, null, null );

bool res = asr.AsyncWaitHandle.WaitOne( 10000, true );  // 10 sec timeout

Обновление: есть лучший пример здесь.

person Ed Guiness    schedule 19.01.2009