Heim >Backend-Entwicklung >C++ >Wie kann ich das Socket Connect-Timeout in .NET Framework konfigurieren?
Zeitüberschreitungen bei Socket-Verbindungen in .NET Framework verwalten
Netzwerkanwendungen müssen oft die Zeit kontrollieren, die sie mit dem Warten auf eine Verbindung zu einem Remote-Server verbringen. Das standardmäßige .NET Framework-Socket-Verbindungszeitlimit kann sehr lang sein (häufig mehr als 15 Sekunden), was zu Verzögerungen beim Herstellen einer Verbindung mit nicht reagierenden Hosts führt. In diesem Artikel wird gezeigt, wie Sie dieses Timeout anpassen, um die Effizienz zu verbessern.
Bedenken Sie den folgenden Codeausschnitt:
<code class="language-csharp">m_clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); // ... m_clientSocket.Connect(ipEnd);</code>
Das Standardverhalten der Connect
-Methode besteht darin, bis zu 15 Sekunden lang zu blockieren. Um eine kürzere Zeitüberschreitung zu implementieren, können wir die AsyncWaitHandle
-Klasse:
<code class="language-csharp">Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); // Set a 5-second connection timeout IAsyncResult result = socket.BeginConnect(sIP, iPort, null, null); bool success = result.AsyncWaitHandle.WaitOne(5000, true); // Wait for 5000 milliseconds (5 seconds) if (socket.Connected) { socket.EndConnect(result); } else { // Handle connection failure socket.Close(); throw new ApplicationException("Connection to server failed."); }</code>
Dieser überarbeitete Code initiiert einen asynchronen Verbindungsversuch. Die Methode WaitOne
wartet maximal 5 Sekunden. Eine erfolgreiche Verbindung innerhalb dieses Zeitraums wird mit EndConnect
abgeschlossen. Wenn die Verbindung fehlschlägt, wird der Socket geschlossen und eine Ausnahme ausgelöst, wodurch längere Wartezeiten für nicht reagierende Server vermieden werden. Dieser Ansatz bietet eine robuste und effiziente Methode zum Verwalten von Socket-Verbindungs-Timeouts in Ihren .NET Framework-Anwendungen.
Das obige ist der detaillierte Inhalt vonWie kann ich das Socket Connect-Timeout in .NET Framework konfigurieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!