.NET でのソケット接続タイムアウトの最適化
ネットワーク ソケット接続では、アプリケーションのフリーズを回避し、ユーザー エクスペリエンスを向上させるために、慎重なタイムアウト管理が必要です。 長時間の接続試行はパフォーマンスに大きな影響を与えます。
推奨されるアプローチ:
.NET でソケット接続タイムアウトを設定する最も効果的な方法は、IAsyncResult
と AsyncWaitHandle
による非同期操作を利用することです。これにより、接続試行を正確に制御できます。
例:
<code class="language-csharp">Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); // Establish a 5-second connection timeout IAsyncResult result = socket.BeginConnect(sIP, iPort, null, null); // Await connection completion or timeout bool success = result.AsyncWaitHandle.WaitOne(5000, true); if (socket.Connected) { socket.EndConnect(result); // Proceed with socket operations } else { // Handle connection failure: close socket and raise exception socket.Close(); throw new ApplicationException("Connection to server failed."); }</code>
この非同期手法は、明示的なタイムアウト設定を行わない同期 Connect()
呼び出しよりも優れた効率と柔軟性を提供します。 接続の待機中にアプリケーション スレッドがブロックされるのを防ぎます。
以上が.NET でソケット接続タイムアウトを効率的に構成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。