salut, je develope un petit chat client serveur en java, dans ce chat le client dés qu'il se connecte il récupere la liste des utilisateurs connectés de puis le serveur et remplie une jlist avec la liste, le probleme c'est que le client se bloque apres qu'il consulte le serveur, voila le code client et serveur, et merci pour l'aide.
si vous avez des idées pour faire cela autrement, elles sont lesbienvenue.
code serveur:
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{ 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); while(rst.next()) { out.write(rst.getString(1)+ "\r\n"); out.flush(); } out.flush(); sEcoute.close(); }catch(Exception ex){System.out.println(ex.getMessage());} } }; threadlistpseudo.start();
code client:
public void windowOpened(java.awt.event.WindowEvent e) { ///////requete pour demander la liste des connectés depuis le serveur try { ///state='c' =>connecté 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(); lpseudo.setModel(dlm); while(req!=null) { req=in.readLine(); lpseudo.setModel(dlm); dlm.addElement(req); lpseudo=new JList(dlm); } sClient.close(); } catch (Exception ex) {System.out.println(ex.getMessage()); }