begin process at 2008 07 06 02:23:47
1 205 433 membres
14 nouveaux aujourd'hui
14 119 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : close(socket) ne débloque pas un accept() ? [ Linux / Réseau & Internet ] (VHSeifer)

close(socket) ne débloque pas un accept() ? le 15/05/2008 22:55:29

VHSeifer
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


Re : close(socket) ne débloque pas un accept() ? le 16/05/2008 17:55:54

VHSeifer
Réponse acceptée !
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




Classé sous : accept, socket, thread, principal, close

Participer à cet échange

Pub



Appels d'offres

Plugin Dialer outlook
Budget : 2 000€
Travail graphique- ill...
Budget : 1 000€
creation de marque et ...
Budget : 1 000€

Snippets en rapport

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS