Close(socket) ne débloque pas un accept() ? [Résolu]

Signaler
Messages postés
18
Date d'inscription
mercredi 20 avril 2005
Statut
Membre
Dernière intervention
16 mai 2008
-
Messages postés
18
Date d'inscription
mercredi 20 avril 2005
Statut
Membre
Dernière intervention
16 mai 2008
-
Bonsoir

J'effectue conjointement de la programmation C/C++ sur Windows & sur Linux.

J'ai un petit soucis ou niveau de la terminaison de mon programme.

J'ai en gros deux threads : le principal crée un socket, bind celui-ci , le met en écoute et puis lance le deuxième thread dont le rôle est d'accepter les connexions des clients (boucle sur un accept() ). Jusque la rien de bien sorcier.
Le principal se met alors en attente d'une touche 'q'. Dès que la touche 'q' est tappée, le thread principal ferme le socket et attend la fin du deuxième thread avant de lui-même se terminer

Mais voila le hic : pour le même code lorsque je tappe 'q' sous Windows la fonction du thread se termine parfaitement car l'accept du deuxième thread n'est plus bloquant , une variable renseigne que c'est la fin du programme et le thread se termine normalement.

Sous Linux, aucune réaction de la part de l'accept(), il reste bloqué le bougre...
( Javais trouvé une solution 'sparadra' : cad faire en sorte que le thread principal fasse un connect() sur lui même mais ce n'est pas très beau quand meme... puis de tt façon le problème se pose aussi lors d'un recv bloquant.... :-s )

Est-ce normal cette réaction différente entre les deux systèmes d'exploitation ?

Merci bien

1 réponse

Messages postés
18
Date d'inscription
mercredi 20 avril 2005
Statut
Membre
Dernière intervention
16 mai 2008

J'annule ma (bête) question.

Je ne dirai plus jamais "to close a door" mais "to shutdown a door". En Unix, le close ne joue pas le même rôle que le shutdown ( desc , SHUT_RDRW ) ;

Après cela va tt de suite mieux...

Voila voila

Close() pour les fichiers et SHUTDOWN pour les sockets... ( excusez moi je passe un peu mes nerfs... cela fait 3 jours que je bloque sur ce truc ! )

Bonne journée