Forum Programmation.perl Fermer proprement un socket

Posté par  .
Étiquettes : aucune
0
21
sept.
2006
Salut,

Je n'arrive pas à fermer correctement mon socket et ça commence à me souler...

Quand je sors du script en lui balançant "exit" le prog se termine normalement mais quand je le relance juste derrière j'ai une erreur à l'accrochage du socket : Adresse déjà utilisée...

Au bout d'une min l'adresse est libérée et je peux réutiliser le port.

Qu'est-ce que j'oublie ?

# numero de port utilisé par le serveur
$port = 5123;
# protocole mis en jeu : TCP
$protocole = getprotobyname('tcp');
# creation du socket en écoute sur le port 5123
socket(ACCES_SERVEUR,AF_INET,SOCK_STREAM,$protocole) ||
die("Ouverture de socket: $!");
$TSAP_serveur = pack('SnA4x8', AF_INET, $port, INADDR_ANY);
bind(ACCES_SERVEUR,$TSAP_serveur) || die("Accrochage socket: $!");
listen(ACCES_SERVEUR, SOMAXCONN) || die("Ecoute socket: $!");


# on attend les connexions des clients...
$maSocket = accept(CLIENT, ACCES_SERVEUR);
while ($ligne = ){
@ordre = split(/\|/, $ligne);
for($i=0;$i<=$#ordre;$i++){
#Supprime les retour a la ligne en fin ligne
$ordre[$i]=~ s/\r\n//g;
#print $ordre[$i]."\t ".$sortie." \n";
}

print "\n***$ordre[0]***\n";

if($ordre[0] eq "exit"){
close(CLIENT);
close(ACCES_SERVEUR);
exit 1;
}
}

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n’en sommes pas responsables.