Probleme deconecton serveur client avec socket [C][pthreads] - C - Programmation
Marsh Posté le 13-01-2017 à 16:18:05
Bonjour
1) tu compiles ton programme serveur en mode debug
2) tu le lances avec gdb
3) quand ca plante, tu tapes bt, et tu verras ou ton programme a planté
Sinon :
- tu fais des malloc sans faire de free
- ton thread fait un write sur des sockets non initialisés. En effet, ligne 82 le accept est bloquant, donc tes threads font se créer 1 par 1 à chaque fois qu'un client va se connecter. Ainsi au premier client, seul newsockfd[0] contient un descripteur de fichier valide, les autres ne contiennent rien ( ton buffer n'est pas initialité, ca peut être n'importe quoi ). Du coup, dans la boucle de ton thread, tu parcoures ton tableau newsockfd, et tu fais un write sur toutes les sockets sauf celle correspondant à ton client i. Je te conseille d'initialiser ton tableau à une valeur invalide ( -1 ) et de faire le write que si la valeur de fd est supérieure à 0.
Marsh Posté le 24-12-2016 à 15:43:13
Bonjour a tous
Je suis étudiant en DUT Informatique et je dois rendre un projet a programmer en C et je me heurte a un gros problème
Voila le projet consiste a créer un programme serveur et un programme client qui communiquent entre eux via des sockets pour créer un chat. Le programme concernant la création du serveur et des sockets ainsi que la connexion client est donné par le professeur.
Mon problème que j'essaye de résoudre depuis 2 semaines est le suivant : Quand j’exécute le programme client (après avoir exécuter le programme serveur) il s’avère que plus d'une fois sur deux le client se déconnecte et fais bug le serveur. Sachant qu'en cas de succès le chat marche bien. De plus le problème est d'autant plus problématique que je dois pouvoir réussir a connecter plusieurs client en même temps.
Tout le code mis en commentaire permet de gérer le pseudo et est fonctionnel dans le programme de plus je ne fournit que le code serveur car je suis presque sur que le problème vient du code serveur
Merci pour votre aide