Heim >Backend-Entwicklung >C++ >Wie kann ich das Socket Connect-Timeout in .NET Framework konfigurieren?

Wie kann ich das Socket Connect-Timeout in .NET Framework konfigurieren?

Linda Hamilton
Linda HamiltonOriginal
2025-01-10 12:04:41598Durchsuche

How Can I Configure Socket Connect Timeout in .NET Framework?

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:

nutzen
<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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn