Bonjour
je realise une application de messagerie instantanéé en utilisant les socket. Coté serveur je crée donc un thread pour permettre plusieurs connexions simultanées mais dans ce thread lorsque j'instantie les flux d entrée et sortie le programme s arrête sans mettre d 'erreur
voici le code :
classe Server :
la classe ServerThread :
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.net.*; import java.io.*; import java.util.*; public class Server { static final int port = 8080; static Map<String,ServerThread> map = new HashMap(); static Vector<client>vect = new Vector(); public static void main (String [] args){ try{ ServerSocket srv = new ServerSocket(port); System.out.println("Démarré " + srv); while (true){ Socket conect = srv.accept(); System.out.println("Connexion accepté : " + conect); new ServerThread (conect, num++).start(); }finally{ System.out.println("closing..."); soc.close(); } }finally{ srv.close();
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
42
43 public class ServerThread extends Thread { private Socket conect; protected boolean fini; private int num; String msgp,msg; ObjectInputStream reception; ObjectOutputStream envoi; String dest, exp; Iterator it = Server.vect.iterator(); public ServerThread(Socket conect, int num){ this.conect=conect; this.num=num; fini=false; } public void run (){ try{ reception = new ObjectInputStream(conect.getInputStream()); System.out.println("initialisation de 'reception' "); reception=new ObjectInputStream(conect.getInputStream()); System.out.println("'reception' initialisé "); client c1 = (client)reception.readObject(); }catch (Exception e){ System.out.println(e); } }
et la classe client (je ne pense pas quelle soit necessaire pour mon probleme mais je la mais quand meme on sait jamais):
Le probleme se situe dans la classe ServerThread dans la partie en gras.
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 public class client { Socket soc; protected String pseudo; //BufferedReader entree; //PrintWriter sortie; ObjectInputStream entree; ObjectOutputStream sortie; String msg; public client (String pseudo){ this.pseudo=pseudo; Server.vect.add(this); } public void connexion() throws IOException{ try{ InetAddress ip = InetAddress.getByName("192.168.1.36"); // System.out.println("Adresse ip du serveur : " + ip); soc = new Socket (ip, Server.port); System.out.println("Socket : " + soc); entree = new ObjectInputStream(soc.getInputStream()); sortie = new ObjectOutputStream(soc.getOutputStream()); sortie.writeObject(this); }catch (Exception e) { e.printStackTrace(); } }
En fait ligne "initialisation de 'reception" s affiche bien
puis après plus rien. Par contre lorsque je met en comentaire les 2 lignes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 reception=new ObjectInputStream(conect.getInputStream()); client c1 = (client)reception.readObject();[/B]
la ligne "'reception 'initialisé'" s affiche bien.
Est ce que quelqu'un saurait d'ou sa peut venir?
merci
Partager