GNU/Linux >> Tutoriales Linux >  >> Linux

Error:la dirección ya está en uso al vincular el socket con la dirección, pero `netstat` muestra el número de puerto libre

Me he encontrado con el mismo problema también. Es porque está cerrando su conexión al socket, pero no al socket en sí. El socket puede entrar en un estado TIME_WAIT (para garantizar que se hayan transmitido todos los datos, TCP garantiza la entrega si es posible) y tardar hasta 4 minutos en liberarse.

o, para una explicación REALMENTE detallada/técnica, consulte este enlace

Ciertamente es molesto, pero no es un error. Vea el comentario de @Vereb sobre esta respuesta a continuación sobre el uso de SO_REUSEADDR .


Prueba netstat así:netstat -ntp , sin el -l . Mostrará la conexión tcp en TIME_WAIT estado.


Sé que ha pasado un tiempo desde que se hizo la pregunta, pero pude encontrar una solución:

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

Esto hizo que el zócalo se pueda reutilizar inmediatamente.

Me disculpo si esto es "incorrecto". No tengo mucha experiencia con enchufes


Linux
  1. Linux:¿cómo montar un sistema de archivos remoto especificando un número de puerto?

  2. Cambiar el número de puerto del servidor SSH predeterminado

  3. Falló el enlace al puerto 22 en 0.0.0.0:la dirección ya está en uso:error al iniciar el servicio sshd CentOS/RHEL

  4. ¿Por qué Tomcat funciona con el puerto 8080 pero no con el 80?

  5. ¿Conectarse a un socket UNIX ya establecido con node.js?

Cómo usar el comando chgrp con ejemplos

Cómo usar el comando de suspensión de Linux con ejemplos

Cómo usar el comando who en Linux con ejemplos

Cómo usar el comando RPM (con ejemplos)

Cómo usar los comandos de Netcat con ejemplos

Cómo encontrar el número de puerto de un servicio en Linux