URL: https://linuxfr.org/forums/programmation-perl/posts/fermer-proprement-un-socket--2 Title: Fermer proprement un socket Authors: Flavien Date: 2006年09月21日T16:45:39+02:00 Tags: Score: 0 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 minute 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 = ){ £spaces£ £/spaces£@ordre = split(/\|/, $ligne); £spaces£ £/spaces£for($i=0;$i<=$#ordre;$i++){ £spaces£ £/spaces£#Supprime les retour a la ligne en fin ligne £spaces£ £/spaces£$ordre[$i]=~ s/\r\n//g; £spaces£ £/spaces£#print $ordre[$i]."\t ".$sortie." \n"; £spaces£ £/spaces£} £spaces£ £/spaces£ £spaces£ £/spaces£print "\n***$ordre[0]***\n"; £spaces£ £/spaces£if($ordre[0] eq "exit"){ £spaces£ £/spaces£close(CLIENT); £spaces£ £/spaces£close(ACCES_SERVEUR); £spaces£ £/spaces£exit 1; £spaces£ £/spaces£} } Merci :)

AltStyle によって変換されたページ (->オリジナル) /