私はネットワーク アプリケーションを作成していますが、ちょっとした問題に遭遇しています。テストの合間に一定期間待たなければなりません。サーバー プログラムは、終了した後でも、使用中のポートが「割り当てられた」ままになっているからです。さらに、処理している問題の原因がわからないため、デバッグが非常に困難になります。
テスト目的で、TCP ポートと UDP ポートを解放する方法はありますか?
答え1
Python プログラムでは、ソケットのシャットダウン関数とクローズ関数を呼び出して、プログラムがソケットをもう使用していないことを OS に知らせ、これらの関数を呼び出した後に何も使用していない場合はソケットの割り当てを解除する必要があります。プログラム終了時にこれらの関数を呼び出さなかった場合は、古くなった割り当て済みソケットを OS がクリーンアップするのを待つことになります。アプリケーションを強制終了したとしても、OS にはそれが使用されていないことを明示的に知る方法がないためです。そのため、プログラムが終了してソケットを適切に閉じないと、OS はソケットが実際に使用されているかどうかを確認するまでしばらく割り当てたままにし、使用されていない場合は他のプログラムが使用できるように割り当てを解除します。
これは、Python のソケットのシャットダウン関数とクローズ関数を説明するリンクです。 SO 回答