Bonjour voilà j'ai un problème avec la tentative de création d'un client / serveur.
voilà mes deux sources
CLIENT :
SERVEUR:
Code : 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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 import java.io.*; import java.net.*; import java.util.*; public class main { public static void main(String args[]) { System.out.print("Bienvenue sur le chat client..."); try { socket = new Socket("127.0.0.1",8080); } catch(Exception e) { System.out.print("Erreur ouverture du socket"); } scanIn = new Scanner(System.in); try { out = new PrintWriter(socket.getOutputStream(),true); } catch (Exception e) { System.out.print("Erreur création flux sortant"); } System.out.print("Variable initialisée : attente de la saisie..."); String str; while(true) { str = scanIn.nextLine(); out.println(str); } } private static Socket socket; private static Scanner scanIn ; private static PrintWriter out ; }
Voilà si je ferme le server brutalement ( avec la croix du haut par exemple ), le client ne s'en apperçois pas... comment faire donc pour éviter ce genre d'erreur ?
Code : 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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 import java.io.*; import java.net.*; import java.util.*; public class main { public static void main(String args[]) { try { socket = new ServerSocket(8080); } catch (Exception e) { System.out.println("Erreur création du ServeurSocket"); } try { s = socket.accept(); in = new BufferedReader(new InputStreamReader(s.getInputStream())); } catch (Exception e) { System.out.println("Erreur : " + e); } String str = ""; try { while ((str = in.readLine()) != null) { System.out.println(str); } } catch (Exception e) { System.out.println("Erreur IO " + e); System.out.println("str : " + str); } } private static ServerSocket socket; private static BufferedReader in; private static Socket s; }
Et si jamais je coupe le client brutalement, alors une exception du type java.net.SocketException: Connection reset se lance...
aidez moi à modifier le code pour ne plus avoir ce genre de problème.
PS: je sais qu'il existe sur le site un tutos qui propose un serveur multi-thread, je l'ai lu mais maintenant j'aimerais essayer d'en faire un moi même.
Je tente déjà de le faire comme ceci et si il marche je passerais en Thread...
Partager