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

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

Susan Sarandon
Susan Sarandonオリジナル
2025-01-10 10:53:46354ブラウズ

How to Efficiently Configure Socket Connect Timeouts in .NET?

.NET でのソケット接続タイムアウトの最適化

ネットワーク ソケット接続では、アプリケーションのフリーズを回避し、ユーザー エクスペリエンスを向上させるために、慎重なタイムアウト管理が必要です。 長時間の接続試行はパフォーマンスに大きな影響を与えます。

推奨されるアプローチ:

.NET でソケット接続タイムアウトを設定する最も効果的な方法は、IAsyncResultAsyncWaitHandle による非同期操作を利用することです。これにより、接続試行を正確に制御できます。

例:

<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 サイトの他の関連記事を参照してください。

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