クライアントがサーバーとの接続を切断するとき、クライアントとサーバーの間で切断状態を通知するやり取りが行われます。その処理が完了すると、クライアントのソケット接続は一定時間 TIME_WAIT 状態になります。これは正常な動作であり、Windows オペレーティングシステムではデフォルトで約 4 分間続きます。
以下の方法を慎重に使用することで、この動作を軽減または排除できます。
レジストリエディター(Regedit)
Windows のレジストリエディター(Regedit)を使用して TIME_WAIT の値を短縮できます。
1. Regedit を開き、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Services\TCPIP\Parameters のレジストリサブキーにアクセスします。
2. TcpTimedWaitDelay という名前の新しい REG_DWORD 値を作成します。
3. 値を秒単位で設定します。例:5 を設定した場合、TIME_WAIT は最大 5 秒間待機します。
4. 保存してシステムを再起動します。
LINGER
TIME_WAIT 状態を回避するもう一つの方法は、ソケットオプション SO_LINGER を使用することです。これを有効にすると、接続を正常に閉じる代わりにクライアントが接続をリセットし、TIME_WAIT 状態を回避できます。
LingerState プロパティを使用してこのオプションを有効にできます。デフォルト値は -1 です。0 を設定すると、タイムアウトなしでソケットから切断するときに接続がリセットされます。
このオプションはあまり推奨されず、最後の手段としてのみ使用してください。
