Как мне установить время окончания вызова socket.connect()?[дубликат]
Вопрос
На этот вопрос уже есть ответ здесь:
- Как настроить тайм-аут подключения к сокету 11 ответов
У меня есть приложение, которое подключается к хосту, который, возможно, не работает.Если хост не работает, я не хочу ждать 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
Обновить:Есть пример получше здесь.