pourquoi mon socket est non bloquant ? - C - Programmation
Marsh Posté le 08-12-2004 à 15:36:05
Déjà, pour s'assurer que vous êtes en mode bloquant, il vaut mieux faire quelque chose comme ça:
Code :
|
Ensuite, est-ce qu'il serait possible de voir le code du serveur?
Marsh Posté le 09-12-2004 à 09:40:06
salut
en fait ça y est j'ai la solution. mon schmilblick est bien bloquant. le problème était en fait que l'application client se déconnectait après avoir envoyé et reçu une commande (au lieu de garder la connexion ouverte, il la fermait après avoir fait ça). du coup le recv lisait du vide sur la socket, et hop ça partait en boucle (et je croyais par consequent que c'était non bloquant).
c'etait donc une fausse impression.
merci quand même pour ta réponse.
Marsh Posté le 07-12-2004 à 20:10:57
salut all
je développe une petite application avec un serveur en C et un client en java, avec des socket bien sûr. pour gérer plusieurs clients, je crée un thread par client. les clients et le serveur échangent des messages grace à send et recv.
bon a priori ça marche pas trop mal SAUF QUE d'après ce que j'ai lu, mon socket devrait être bloquant. ainsi un thread qui fait un recv devrait bloquer dessus jusqu'à ce qu'il y ait qqch à lire. et ce n'est pas le cas !
j'ai l'impression que seul le premier recv est bloquant, les autres ne le sont plus. j'ai essayer de m'assurer que mon socket est bloquant avec :
mais ça ne semble pas marcher.
qq'un aurait une idée svp ? parce que là je n'arrive pas à avancer.
merci
je mets un un peu de code pour que ce soit plus clair :
dans le main, après la création du socket, nous avons :
et la fonction gestion_client :
le résultat, c'est que ça boucle en réécrivant le premier message reçu !
merci