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

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

Ich bin auch auf das gleiche Problem gestoßen. Das liegt daran, dass Sie Ihre Verbindung zum Socket schließen, aber nicht den Socket selbst. Der Socket kann in einen TIME_WAIT-Zustand eintreten (um sicherzustellen, dass alle Daten übertragen wurden, garantiert TCP die Lieferung, wenn möglich) und bis zu 4 Minuten für die Freigabe benötigen.

oder, für eine WIRKLICH detaillierte/technische Erklärung, überprüfen Sie diesen Link

Es ist sicherlich ärgerlich, aber es ist kein Fehler. Siehe den Kommentar von @Vereb zu dieser Antwort unten zur Verwendung von SO_REUSEADDR .


Versuchen Sie netstat so:netstat -ntp , ohne -l . Die TCP-Verbindung wird in TIME_WAIT angezeigt Zustand.


Ich weiß, es ist eine Weile her, seit die Frage gestellt wurde, aber ich konnte eine Lösung finden:

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

Dadurch kann der Socket sofort wiederverwendet werden.

Ich entschuldige mich, wenn das "falsch" ist. Ich bin nicht sehr erfahren mit Sockets


Linux
  1. Ändern Sie die Standardportnummer des SSH-Servers

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

  3. Bindung fehlgeschlagen:Adresse wird bereits verwendet

  4. Wie verwenden Sie reguläre Ausdrücke mit dem cp-Befehl in Linux?

  5. Aktualisierungszeit:ntpdate[3108]:Der NTP-Socket wird verwendet und wird beendet

Verwendung des chgrp-Befehls mit Beispielen

So verwenden Sie den Linux-Schlafbefehl mit Beispielen

So verwenden Sie den who-Befehl in Linux mit Beispielen

Verwendung des RPM-Befehls (mit Beispielen)

Verwendung von Netcat-Befehlen mit Beispielen

So finden Sie die Portnummer eines Dienstes in Linux