Bonsoir à tous, je suis actuellement en train de travailler sur un petit projet de chat en JAVA et je bloque sur une exception.
Pour les api, j'établis la connexion entre mes clients et mon serveur via des Sockets et des InetAddress. Ces mêmes clients sont gérés côtés serveur avec des threads. Les envois de données se font avec desDataOutputStream et des DataInputStream.
Mon client possède un thread, permettant d'écouter en boucle l'arrivée d'un message.
Hors la dernière exception qu'il me reste à gérer est la suivante : à la fermeture du serveur, je voudrais avertir les clients et les forcer à quitter le programme.
Hors au crash volontaire du serveur, j'ai l'exception suivante :
Cette exception se répète en boucle : la boucle de mon thread :ClientServeur.Message receptionMessage
SEVERE: null
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:189)
at java.net.SocketInputStream.read(SocketInputStream.java:121)
at java.net.SocketInputStream.read(SocketInputStream.java:203)
at java.io.DataInputStream.readUnsignedShort(DataInputStream.java:337)
at java.io.DataInputStream.readUTF(DataInputStream.java:589)
at java.io.DataInputStream.readUTF(DataInputStream.java:564)
at ClientServeur.Message.receptionMessage(Message.java:55)
at ClientServeur.Client.run(Client.java:223)
at java.lang.Thread.run(Thread.java:722)
Classe Client:
Classe Message :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 while (connect) //la boucle en question { String recu = this.getMessage().receptionMessage(); //la ligne 223 ... }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public String receptionMessage() { String res = "initialisation"; try { res = entree.readUTF(); //la ligne 55 } catch (IOException ex) { Logger.getLogger(TraitementClient.class.getName()).log(Level.SEVERE, null, ex); } return res;
Je n'arrive pas à attraper correctement cette exception, ni à la traiter.
J'ai par exemple essayé de fermer Data et le Socket dans le catch de récéptionMessage(), ou de faire un throws avec une exception personnalisé (popUp + System.Exit(0) ) mais rien n'y fait.
Je suis persuadé que ce n'est rien, mais je débute et je m'embrouille énormément avec les exceptions..
Je vous remercie par avance de votre lecture et de vos éventuelles réponses!![]()
Partager