bonjour, je développe un chat en java, et je veux que le client dés qu'il s'authentifie,il récupère la liste des gens connectés depuis le serveur, en interrogeant la BD sur le serveur et voir si le statut est égale à c (connecté), je sais que c'est pas la meilleur façon, mais c'est tous ce que j'arrive à faire, le problème c'est que j'arrive pas a récupérer cette liste, et
lorsque j'affiche la liste au niveau client avec: System.out.println("listPseudo: "+ dlm);
le resultat est: listPseudo: [taoufik, taoufik, taoufik, taoufik, taoufik, taoufik, taoufik, taoufik, taoufik, taoufik, taoufik, taoufik, taoufik, taoufik, taoufik, taoufik, taoufik, taoufik, taoufik]
juste le dernier element qui s'affiche en infini
, voici le code, et merci pour votre aide.
code serveur:
code client:
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 Thread threadlistpseudo=new Thread() { public PrintWriter out=null; public BufferedReader in=null; public ServerSocket sEcoute=null; public Socket sService=null; public void run() { ////////repondre a la requete du client pour lui communiquer la liste des pseudo try{ while(true) { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); con = DriverManager.getConnection(url); stm = con.createStatement(); sEcoute =new ServerSocket(3500); sService=sEcoute.accept(); out=new PrintWriter(sService.getOutputStream(),true); in=new BufferedReader(new InputStreamReader(sService.getInputStream())); String query=in.readLine(); rst=stm.executeQuery(query); rst=stm.executeQuery(query); while(rst.next()) { out.write(rst.getString("login")+ "\r\n"); out.flush(); } out.write("STOP\r\n"); out.flush(); sEcoute.close(); } }catch(Exception ex){System.out.println(ex.getMessage());} } }; threadlistpseudo.start();
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 public void windowOpened(java.awt.event.WindowEvent e) { //requete pour demander la liste des connectés depuis le serveur en verifiant le statut dans la base de données si egale à 'c' try { String req1="select login from authentification where state='c'"; sClient =new Socket("localhost",3500); out=new PrintWriter(sClient.getOutputStream(),true); out.write(req1+ "\r\n"); out.flush(); in=new BufferedReader(new InputStreamReader(sClient.getInputStream())); String req=in.readLine(); DefaultListModel dlm=new DefaultListModel(); while(req.compareTo("STOP")!=0) { lpseudo.setModel(dlm); dlm.addElement(req); System.out.println("listPseudo: "+ dlm); } sClient.close(); } catch (Exception ex) {System.out.println(ex.getMessage()); } }
Partager