特定のポートに tcp ソケットをバインドする Java のプロジェクトがあります。
ポート X でソケット バインドの close() メソッドを呼び出すと、close() メソッドを呼び出したにもかかわらず、ポート X で新しいソケットを数秒間バインドできません。しかし、数秒後にバインドしても問題ありません。
これが起こるのは正常ですか?または、コードをもう一度確認する必要がありますか?
特定のポートで tcp ソケットをバインドします
それが問題であり、解決策はそれをしないことです。システムに選択させます。
特定のローカル ポートへのバインドは、少なくとも正気ではありません。熱狂的なネット管理者は、(a) セキュリティを強化し、(b) 簡単に実装できるという誤った信念や妄想で、アウトバウンド ポートの範囲を指定することがあります。どちらも正しくありません。
TIME_WAIT 状態は「OS が通知されるまでしばらく時間がかかる」ということではなく、TCP の重要なセキュリティ機能です。閉じたソケットは数分間残ります。特定のローカル アウトバウンド ポートにバインドしていない限り、これは機能であり、バグではありません。