GNU/Linux >> Linux Esercitazione >  >> Linux

Errore:indirizzo già in uso durante l'associazione del socket con l'indirizzo ma il numero di porta è mostrato libero da `netstat`

Anch'io ho riscontrato lo stesso problema. È perché stai chiudendo la tua connessione al socket, ma non il socket stesso. Il socket può entrare in uno stato TIME_WAIT (per garantire che tutti i dati siano stati trasmessi, TCP garantisce la consegna se possibile) e impiegare fino a 4 minuti per il rilascio.

oppure, per una spiegazione DAVVERO dettagliata/tecnica, controlla questo link

È certamente fastidioso, ma non è un bug. Vedi il commento di @Vereb su questa risposta di seguito sull'uso di SO_REUSEADDR .


Prova netstat in questo modo:netstat -ntp , senza -l . Mostrerà la connessione tcp in TIME_WAIT stato.


So che è passato un po' di tempo dall'ultima volta che la domanda è stata posta, ma sono riuscito a trovare una soluzione:

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

Questo imposta il socket in grado di essere riutilizzato immediatamente.

Mi scuso se questo è "sbagliato". Non ho molta esperienza con i socket


Linux
  1. Associazione alla porta 22 su 0.0.0.0 non riuscita:indirizzo già in uso – errore durante l'avvio del servizio sshd CentOS/RHEL

  2. Perché Tomcat funziona con la porta 8080 ma non con la 80?

  3. Connessione a un socket UNIX già stabilito con node.js?

  4. Errore:manca la libreria OpenSSL? durante il tentativo di installare Python

  5. Come si usano le espressioni regolari con il comando cp in Linux?

Come utilizzare il comando chgrp con esempi

Come utilizzare il comando sleep di Linux con esempi

Come utilizzare il comando who in Linux con esempi

Come utilizzare il comando RPM (con esempi)

Come utilizzare i comandi Netcat con gli esempi

Come trovare il numero di porta di un servizio in Linux