GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Bindung fehlgeschlagen:Adresse wird bereits verwendet

Alle haben Recht. Wenn Sie jedoch auch damit beschäftigt sind, Ihren Code zu testen, Ihren eigenen Die Anwendung "besitzt" möglicherweise immer noch den Socket, wenn sie relativ schnell startet und stoppt. Versuchen Sie SO_REUSEADDR als Socket-Option:

Was genau macht SO_REUSEADDR?

Diese Socket-Option teilt dem Kernel mit, dass er, selbst wenn dieser Port belegt ist (im Zustand TIME_WAIT), trotzdem weitermachen und ihn wiederverwenden soll. Wenn es beschäftigt ist, aber einen anderen Status hat, erhalten Sie immer noch eine Adresse, die sich bereits in einem Benutzerfehler befindet. Es ist nützlich, wenn Ihr Server heruntergefahren und sofort neu gestartet wurde, während noch Sockets auf seinem Port aktiv sind. Sie sollten sich darüber im Klaren sein, dass das Eintreffen unerwarteter Daten Ihren Server verwirren kann, aber obwohl dies möglich ist, ist es nicht wahrscheinlich.

Es wurde darauf hingewiesen, dass "ein Socket ein 5-Tupel ist (proto, localaddr, local port, remote addr, remote port). SO_REUSEADDR sagt nur, dass Sie lokale Adressen wiederverwenden können. Das 5-Tupel muss immer noch eindeutig sein!" von Michael Hunter ([email protected]). Dies ist wahr, und deshalb ist es sehr unwahrscheinlich, dass unerwartete Daten jemals von Ihrem Server gesehen werden. Die Gefahr besteht darin, dass ein solches 5-Tupel immer noch im Netz herumschwirrt, und während es herumhüpft, erhält eine neue Verbindung vom selben Client auf demselben System zufällig denselben entfernten Port. Dies wird von Richard Stevens in ``2.7 Pleaseexplain the TIME_WAIT state.'' erklärt.


Sie haben einen Prozess, der diesen Port bereits verwendet. netstat -tulpn ermöglicht es einem, die Prozess-ID zu finden, die einen bestimmten Port verwendet.


Linux
  1. Binden an Port 22 auf 0.0.0.0 fehlgeschlagen:Adresse wird bereits verwendet – Fehler beim Starten des sshd-Dienstes CentOS/RHEL

  2. Fehler:Adresse wird bereits verwendet, während Socket mit Adresse verbunden wird, aber die Portnummer wird von `netstat` frei angezeigt

  3. Android Studio – Gradle-Synchronisierung fehlgeschlagen:Bereits verworfen

  4. Ist es möglich, eine Adresse:Port zu pingen?

  5. Wie binde ich den MySQL-Server an mehr als eine IP-Adresse?

So verwenden Sie die SSH-Portweiterleitung

So suchen Sie unter Linux nach Listening Ports (Ports in use)

Verwendung von Netcat-Befehlen mit Beispielen

So verwenden Sie Netcat zum Scannen offener Ports in Linux

Debian 9 – Io-Adresse bereits verwendet? Booten nicht möglich?

Wie und warum Linux zur Installation von Telnet verwendet wird