GNU/Linux >> Tutoriels Linux >  >> Linux

Erreur :Adresse déjà utilisée lors de la liaison du socket avec l'adresse, mais le numéro de port est affiché libre par `netstat`

J'ai également rencontré le même problème. C'est parce que vous fermez votre connexion au socket, mais pas le socket lui-même. Le socket peut entrer dans un état TIME_WAIT (pour s'assurer que toutes les données ont été transmises, TCP garantit la livraison si possible) et prendre jusqu'à 4 minutes pour se libérer.

ou, pour une explication VRAIMENT détaillée/technique, consultez ce lien

C'est certes gênant, mais ce n'est pas un bug. Voir le commentaire de @Vereb sur cette réponse ci-dessous sur l'utilisation de SO_REUSEADDR .


Essayez netstat comme ceci :netstat -ntp , sans le -l . Il affichera la connexion tcp en TIME_WAIT état.


Je sais que cela fait un moment que la question n'a pas été posée, mais j'ai pu trouver une solution :

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

Cela définit la socket pouvant être réutilisée immédiatement.

Je m'excuse si c'est "faux". Je ne suis pas très expérimenté avec les sockets


Linux
  1. Linux - Comment monter un système de fichiers distant en spécifiant un numéro de port ?

  2. Modifier le numéro de port du serveur SSH par défaut

  3. Échec de la liaison :adresse déjà utilisée

  4. Comment contrôler l'adresse IP source d'un paquet ZeroMQ sur une machine avec plusieurs IP ?

  5. Comment utiliser les expressions régulières avec la commande cp sous Linux ?

Comment utiliser la commande chgrp avec des exemples

Comment utiliser la commande Linux sleep avec des exemples

Comment utiliser la commande who sous Linux avec des exemples

Comment utiliser la commande RPM (avec exemples)

Comment utiliser les commandes Netcat avec des exemples

Comment trouver le numéro de port d'un service sous Linux