GNU/Linux >> Znalost Linux >  >> Linux

Chyba:Adresa se již používá při vázání soketu s adresou, ale číslo portu je zobrazeno jako volné pomocí `netstat`

Také jsem narazil na stejný problém. Je to proto, že ukončujete připojení k soketu, ale ne k soketu samotnému. Soket může vstoupit do stavu TIME_WAIT (aby se zajistilo, že všechna data byla přenesena, protokol TCP zaručuje doručení, pokud je to možné) a uvolnění může trvat až 4 minuty.

nebo pro OPRAVDU podrobné/technické vysvětlení se podívejte na tento odkaz

Je to jistě nepříjemné, ale není to chyba. Viz komentář od @Vereb k této odpovědi níže o použití SO_REUSEADDR .


Zkuste netstat takto:netstat -ntp , bez -l . Zobrazí připojení tcp vTIME_WAIT stavu.


Vím, že to už nějakou dobu od té otázky bylo, ale podařilo se mi najít řešení:

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

Tím nastavíte zásuvku tak, aby ji bylo možné okamžitě znovu použít.

Omlouvám se, pokud je to "špatně". Se zásuvkami nemám moc zkušeností


Linux
  1. Změňte výchozí číslo portu serveru SSH

  2. Vazba na port 22 na 0.0.0.0 selhala:adresa se již používá – chyba při spouštění služby sshd CentOS/RHEL

  3. Vazba selhala:Adresa se již používá

  1. Jak používáte regulární výrazy s příkazem cp v Linuxu?

  2. Čas aktualizace:ntpdate[3108]:soket NTP se používá, ukončuje se

  3. Jaké je maximální číslo portu?

  1. Linux – Jak připojit vzdálený souborový systém se zadáním čísla portu?

  2. Proč Tomcat pracuje s portem 8080, ale ne s 80?

  3. Připojujete se k již zavedenému soketu UNIX pomocí node.js?