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

バインドに失敗しました:アドレスは既に使用されています

誰もが正しいです。ただし、コードのテストにも忙しい場合は、自分の アプリケーションが比較的迅速に開始および停止する場合、アプリケーションはまだソケットを「所有」している可能性があります。 SO_REUSEADDR をソケット オプションとして試してください:

<ブロック引用>

SO_REUSEADDR は正確には何をしますか?

このソケット オプションは、このポートがビジー (TIME_WAIT 状態) であっても、先に進んで再利用することをカーネルに伝えます。ビジーであるが別の状態の場合でも、アドレスが既に使用されているというエラーが発生します。サーバーがシャットダウンされ、そのポートでソケットがまだアクティブなときにすぐに再起動する場合に役立ちます。予期しないデータが入ってくると、サーバーが混乱する可能性があることに注意してください。ただし、これは可能ですが、そうではない可能性があります。

「ソケットは 5 つのタプル (proto、localaddr、ローカル ポート、リモート アドレス、リモート ポート) です。SO_REUSEADDR は、ローカル アドレスを再利用できることを示しているだけです。5 つのタプルは依然として一意でなければなりません!」と指摘されています。 Michael Hunter 著 ([email protected])。これは事実であり、これが予期しないデータがサーバーに表示される可能性が非常に低い理由です。危険なのは、このような 5 タプルがまだネット上に浮かんでいて、跳ね回っている間に、同じシステム上の同じクライアントからの新しい接続がたまたま同じリモート ポートを取得することです。これについては、「2.7 TIME_WAIT 状態について説明してください。」で Richard Stevens が説明しています。


そのポートをすでに使用しているプロセスがあります。 netstat -tulpn 特定のポートを使用しているプロセス ID を見つけることができます。


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

  2. Android Studio - Gradle の同期に失敗しました:既に破棄されています

  3. Linux の特定のポートで netstat を使用する方法

  1. cPanelでIPブロッカーを使用する方法

  2. 使用されているシリアルポートを見つける方法は?

  3. SSH に 2 番目の専用 IP アドレスを使用する必要がありますか?

  1. Apache 2はバインドできませんでした、アドレスはすでに使用されていますか?

  2. Chromecastの使い方は?

  3. Linuxでのポートの使用を確認する