ホームページ >バックエンド開発 >C++ >.NET Framework でソケット接続タイムアウトを構成するにはどうすればよいですか?

.NET Framework でソケット接続タイムアウトを構成するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-10 12:04:41598ブラウズ

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

.NET Framework でのソケット接続タイムアウトの管理

ネットワーク アプリケーションは多くの場合、リモート サーバーへの接続の待機時間を制御する必要があります。 デフォルトの .NET Framework ソケット接続タイムアウトは非常に長い (多くの場合 15 秒を超える) 場合があり、応答しないホストへの接続時に遅延が発生します。この記事では、効率を向上させるためにこのタイムアウトを調整する方法を説明します。

次のコード スニペットを考えてみましょう:

<code class="language-csharp">m_clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

// ...

m_clientSocket.Connect(ipEnd);</code>

Connect メソッドのデフォルトの動作は、最大 15 秒間ブロックします。より短いタイムアウトを実装するには、AsyncWaitHandle クラスを利用できます。

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

この改訂されたコードは、非同期接続の試行を開始します。 WaitOne メソッドは最大 5 秒間待機します。 この時間枠内で接続が成功すると、EndConnect が完了します。 接続が失敗すると、ソケットが閉じられ、例外が発生するため、応答しないサーバーが長時間待機することがなくなります。このアプローチは、.NET Framework アプリケーションでソケット接続のタイムアウトを管理するための堅牢かつ効率的な方法を提供します。

以上が.NET Framework でソケット接続タイムアウトを構成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。