Pas la socket #1 : La socket retournée par accept().
Type: Messages; Utilisateur: Médinoc
Pas la socket #1 : La socket retournée par accept().
Ben non : Si la #1 est "identifiée dans le paramètre readfs de select()", alors on fait juste le accept() et on l'ajoute aux prochains select()...
perdu, ça teste pour les deux si on lui passe les deux sockets (ou beaucoup plus)
Ben non : Si le thread 1 ne fait pas lui-même le recv(), ou s'il utilise select(), il ne sera pas bloqué par un seul client.
Le problème, c'est que le thread #1 ne sait pas si le client vient du thread #2 ou d'un autre processus tant que recv() n'a pas retourné.
Donc, le thread #1 doit obligatoirement faire le recv()....
Avec select(), on peut choisir de mettre toute la communication réseau dans le même thread, et par exemple lancer les opérations longues dans des threads à part (ou UN thread (ou encore un pool de...
Mais si le client n'envoit rien, le thread du accept() restera bloqué sur le recv() et ne pourra plus rien accepter d'autre.
Sauf bien sûr en utilisant select()...
Mais pour reconnaitre le message de fin, il faut que le thread qui fait le accept() fasse un recv() en plus sur le socket qu'il vient d'accepter...
Si tu veux pouvoir terminer proprement un thread qui ne fait que de l'attente de connexion (type accept()) en boucle, je ne vois pas trente-six solutions propres :
Pour moi, tu dois ajouter un...
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.