Bonjour à tous,
J'ai un problème assez basique mais que je n'arrive pas à comprendre.
J'utilise un serveur en java pour un jeu multijoueur. Lorsqu'un joueur se connecte au serveur, celui-ci lui crée un thread dédié. Quand je quitte le serveur, les joueurs sont déconnecté automatiquement et lorsque qu'un joueur quitte le client, le serveur détecte automatiquement cette deconnexion et arrête le thread du joueur.
Jusque là tout vas bien. Le problème c'est lorsque un joueur est connecté au serveur et qu'il perd sa connexion internet. Dans ce cas, le client fini par se déconnecter au bout de 30 secondes mais le serveur fait comme si de rien n'était, le joueur (enfin ce qu'il en reste) n'est jamais deconnecté côté serveur. Je comprend pas trop, car il me semblait que ce genre de chose était géré directement dans le protocole TCP.
Voici le code que j'utilise pour mon serveur :
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 public void run() { try { StringBuilder Message = new StringBuilder(100); char Caractere[] = new char[1]; while (Socket_In.read(Caractere, 0, 1) != -1) { char C = Caractere[0]; if (C == 0) { String MessageString = Message.toString(); Message = new StringBuilder(100); Analyse_Message(MessageString); } else { Message.append(C); } } } catch (Exception e) { Deconnexion("Erreur de lecture du flux."); e.printStackTrace(); } finally { Deconnexion("Fermeture du client"); } }
avec dans le constructeur :
Code java : Sélectionner tout - Visualiser dans une fenêtre à part Socket_In = new BufferedReader(new InputStreamReader(Socket.getInputStream()));
Quelqu'un pourrait m'expliquer comment détecter ce genre de perte de connexion entre un client et un serveur ?
Merci d'avance !
Partager