Ajouter un commentaire

taoufik109
bloquage d'un client de chat (socket et thread)

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());
}
 

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
 EEEE  RRRR   EEEE  BBBB    AA  
E R R E B B A A
EEE RRRR EEE BBBB AAAA
E R R E B B A A
EEEE R RR EEEE BBBB A A