ソケット接続のタイムアウト遅延の削減
オフラインまたは応答しないリモート サーバーに接続すると、タイムアウトが長くなり、アプリケーションのパフォーマンスが妨げられる可能性があります。 この記事では、これらの遅延を最小限に抑え、接続試行を改善するためのテクニックについて説明します。
非常に効果的な戦略には、非同期 BeginConnect
メソッドの使用が含まれます。このメソッドはメインスレッドをブロックせずに接続を開始し、IAsyncResult
オブジェクトを返します。 このオブジェクト内の WaitOne
関数を使用すると、接続試行のタイムアウト (ミリ秒単位) を指定できます。
これが例です:
<code class="language-csharp">Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); // Set a 5-second timeout IAsyncResult result = socket.BeginConnect(sIP, iPort, null, null); bool success = result.AsyncWaitHandle.WaitOne(5000, true); if (socket.Connected) { socket.EndConnect(result); } else { // Handle connection failure socket.Close(); throw new ApplicationException("Connection to server failed."); }</code>
このコードは 5 秒のタイムアウトを設定します。 接続がその時間内に確立されない場合、WaitOne
は false
を返し、接続の失敗を通知します。この方法では、タイムアウト動作をきめ細かく制御し、アプリケーションのニーズに基づいて接続試行を最適化します。
以上が接続試行を高速化するためにソケット接続タイムアウトを最適化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。