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

StackOverflow https://stackoverflow.com/questions/456891

  •  19-08-2019
  •  | 
  •  

Вопрос

На этот вопрос уже есть ответ здесь:

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

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

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

Это было полезно?

Решение

Видишь Начинайте подключаться и Обзор асинхронного программирования

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top