Comment définir le délai d'attente d'un appel socket.connect ()? [dupliquer]
Question
Cette question a déjà une réponse ici:
J'ai une application qui se connecte à un hôte en panne. Si l'hôte est en panne, je ne veux pas attendre les 30 secondes environ, il faut attendre. J'utilise des prises de blocage pour le moment.
J'ai examiné socket.poll () et socket.select () mais je préférerais simplement avoir un réglage de l'heure sur le socket. Cela ne me dérange pas si c'est un paramètre que je dois faire quelque part dans le système. De plus, il semblait que je comprenais que les sondages et les sélections ne fonctionnaient pas avec une communication orientée connexion - est-ce correct?
Si cela est absolument impossible, quel est le bon moyen d'obtenir les résultats souhaités en utilisant poll, select ou une autre technique?
La solution
Voir BeginConnect et Présentation de la programmation asynchrone
IAsyncResult asr = socket.BeginConnect( ip, port, null, null );
bool res = asr.AsyncWaitHandle.WaitOne( 10000, true ); // 10 sec timeout
Mise à jour: il existe un meilleur exemple ici .