[C] Server plante
shootme
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Bonsoir,
Voila j'ai commencé a coder un server de tchat...
Probléme: Dès que un utilisateur ce déconnect l'appli par en cacahouéte.
Voici le code :
Voila tout me parait normal... mais il plante et fait n'importe quoi.
exemple il lance la boucle
plusieurs fois quand un utilisateur ce déconnect...
Voila j'ai commencé a coder un server de tchat...
Probléme: Dès que un utilisateur ce déconnect l'appli par en cacahouéte.
Voici le code :
//main.h struct connected { char *pseudo; char *ip; int sock; struct connected *next; }; extern connected *co; //main.c struct connected *co = NULL; // je centralise toute les infos des connecté ici DWORD WINAPI client_boucle(void * lpParameter) { struct connected *user = (struct connected *) malloc(sizeof(connected)); struct connected *d = NULL; int max = 0; int i = 0; char buffer[2048]; fd_set fs; while(1) { FD_ZERO(&fs); //mise a zéro FD_SET(ssock, &fs); //set ssock dans mon fd d = co; //Ajoute la totalité de la struct connected dans d while (d != NULL) { FD_SET(d->sock, &fs); //ajout tous les connecté dans fd d = d->next; } if (select(max + 1, &fs, NULL, NULL, NULL) == -1) break; if (FD_ISSET(ssock, &fs)) { //Connexion utilisateurs SOCKADDR_IN csin; int sinsize = sizeof(csin); csock = accept(ssock, (SOCKADDR *)&csin, &sinsize); nb_con++; lecture_client(csock, buffer); //info que l'user transmet a la connexion user->pseudo = strdup("test"); user->ip = strdup("127.0.0.1"); user->sock = csock; add_user(user); //Ajout en struct }else { //action d'un utilisateur d = co; while (d != NULL) { if (FD_ISSET(d->sock, &fs)) { //Je regarde quel utilisateur if(lecture_client(d->sock, buffer) == 0) {// utilisateur Déconnecté nb_con--; closesocket(d->sock); //fermeture de la socket utilisateur rm_user(d); //suppression de l'utilisateur. } } d = d->next; } } } return 0; }
Voila tout me parait normal... mais il plante et fait n'importe quoi.
exemple il lance la boucle
while (d != NULL) { if (FD_ISSET(d->sock, &fs)) { ....
plusieurs fois quand un utilisateur ce déconnect...
A voir également:
- [C] Server plante
- Plante - Guide
- Cybera server - Télécharger - Divers Réseau & Wi-Fi
- Ps3 media server - Télécharger - Divers Réseau & Wi-Fi
- Filezilla server - Télécharger - Téléchargement & Transfert
- Cette plante encore peu connue fleurit toute l'année - Et elle est magnifique ! - Guide