Gérer la deconnection d'un client
Bonjour à tous !
Je dois créer un petit jeu multi-joueurs en temps réel (max 10 connections). Pour ce faire j'ai créé un serveur multi-thread.
J'ai un problème lors de la déconnection d'un client. Le serveur boucle sans fin pour afficher le dernier message reçu.
Voila le thread pour chaque client
Code:
1 2 3 4 5 6 7 8 9 10
| void* reception(void* arg) {
char buffer[4096];
while(recevoir((int)arg, buffer)) {
cout << buffer << endl;
}
close((int)arg);
return (void*)1;
} |
Le client :
Code:
1 2 3 4
| char buf[4096]= "hello";
envoyer (socket, buf);
sleep(2);
envoyer (socket, buf); |
Lorsqu'on quitte le client, que ce soit proprement ou par ctrl-c. Le serveur n'arrête pas d'afficher "hello". Je pense que ça doit être un problème de socket non fermé mais je n'en suis pas sûr !
EDIT: Comment arrêter le thread lorsqu'un client se déconnecte ?