1. ホーム
  2. linux

[解決済み] CLOSE_WAITのソケット接続を解除する方法

2022-12-20 15:17:25

質問

特定のポートでサーバーと対話する小さなプログラムを書きました。プログラムはうまく動作しますが、しかし。

一度、プログラムが予期せず終了し、それ以来、そのソケット接続は CLOSE_WAIT の状態で表示されます。プログラムを実行しようとするとハングアップし、強制終了しなければならず、そのためにさらに さらに CLOSE_WAIT ソケット接続になります。

これらの接続をフラッシュする方法はありますか?

どのように解決するのですか?

CLOSE_WAIT は、プログラムがまだ実行中で、ソケットを閉じていない (そしてカーネルはそれを待っている) ことを意味します。追加 -pnetstat でpidを取得し、さらに強制的に( SIGKILL で)強制終了します。これで、あなたの CLOSE_WAIT ソケットを取り除くことができます。また ps を使って pid を見つけることもできます。

SO_REUSEADDR はサーバ用で TIME_WAIT ソケットのためのものなので、ここでは適用されません。