GNU/Linux >> Linux の 問題 >  >> Linux

エラー:ソケットをアドレスにバインドしているときに、アドレスは既に使用されていますが、ポート番号は「netstat」によって空いていると表示されます

私も同じ問題に遭遇しました。これは、ソケット自体ではなく、ソケットへの接続を閉じているためです。ソケットは TIME_WAIT 状態になり (すべてのデータが送信されたことを確認するため、可能であれば TCP が配信を保証します)、解放されるまで最大 4 分かかります。

または、非常に詳細な/技術的な説明については、このリンクを確認してください

確かに面倒ですが、バグではありません。 SO_REUSEADDR の使用については、以下のこの回答に関する @Vereb のコメントを参照してください。 .


次のように netstat を試してください:netstat -ntp-l なし . TIME_WAIT で TCP 接続が表示されます


質問が出されてからしばらく経ちましたが、解決策を見つけることができました:

int sockfd;
int option = 1;
sockfd = socket(AF_INET, SOCK_STREAM, 0);
setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &option, sizeof(option));

これにより、すぐに再利用できるソケットが設定されます。

これが「間違っている」場合は申し訳ありません。私はソケットの経験があまりありません


Linux
  1. 0.0.0.0 のポート 22 へのバインドに失敗しました:アドレスは既に使用されています – sshd サービス CentOS/RHEL の開始中にエラーが発生しました

  2. Tomcat がポート 8080 で動作するのに 80 で動作しないのはなぜですか?

  3. node.js で既に確立されている UNIX ソケットに接続しますか?

  1. エラー:OpenSSL ライブラリがありませんか? Pythonをインストールしようとしている間

  2. 複数の IP を持つマシンで ZeroMQ パケットの送信元 IP アドレスを制御する方法は?

  3. 使用中の RAM スロットの数を確認するにはどうすればよいですか?

  1. Linux –ポート番号を指定してリモートファイルシステムをマウントする方法は?

  2. 最大ポート番号はいくつですか?

  3. ポート 80 のアクティブな接続数を確認しますか?