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

VHSeifer 18 Messages postés mercredi 20 avril 2005Date d'inscription 16 mai 2008 Dernière intervention - 15 mai 2008 à 22:55 - Dernière réponse : VHSeifer 18 Messages postés mercredi 20 avril 2005Date d'inscription 16 mai 2008 Dernière intervention
- 16 mai 2008 à 17:55
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
Afficher la suite 

Votre réponse

1 réponse

Meilleure réponse
VHSeifer 18 Messages postés mercredi 20 avril 2005Date d'inscription 16 mai 2008 Dernière intervention - 16 mai 2008 à 17:55
3
Merci
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

Merci VHSeifer 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de VHSeifer

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.