Wie kann ich die Zeit aus einem Socket.connect set () nennen? [Duplikat]
Frage
Diese Frage bereits eine Antwort hier:
- Wie Socket konfigurieren Timeout verbinden 11 Antworten
Ich habe eine Anwendung, die mit einem Host-Verbindung, die unten sein könnte. Wenn der Host will ich immer noch nicht für die ca. 30 Sekunden warten, um es zu einer Zeitüberschreitung kommt. Ich bin mit blockierende Sockets im Moment.
Ich habe bei socket.poll gesucht () und socket.select (), aber ich habe lieber nur ein Mal auf dem Sockel setzen. Ich habe nichts dagegen, wenn es sich um eine Einstellung ist ich habe irgendwo im System zu tun. Auch schien ich diese Umfrage zu verstehen, und wählen Sie nicht mit dem verbindungsorientierten Kommunikation -is diese korrekt arbeiten?
Wenn dies absolut unmöglich ist, was für eine nette Art und Weise ist es, die Ergebnisse zu erhalten, ich Umfrage wollen, wählen Sie oder eine andere Technik?
Lösung
Siehe Beginconnect und Asynchrone Programmierung Übersicht
IAsyncResult asr = socket.BeginConnect( ip, port, null, null );
bool res = asr.AsyncWaitHandle.WaitOne( 10000, true ); // 10 sec timeout
Update: Es gibt ein besseres Beispiel hier .