Ajouter un commentaire

Niroken

Hello,

Tout d'abord mille excuses, j'ai raconté une grosse c...... :)

Ce qui m'avait troublé dans tout ca c'était le fait que ton client n'affiche à un moment donné qu'une partie ou pas du tt de données, et que le nombre de lignes affichées pouvait être aléatoire.

J'ai donc pensé que c'était parcequ'une fois que le serveur avait tout envoyé il se fermait et le client pouvait ne pas avoir tt lu.

C'est donc pourquoi je me suis dis... le client va dire au serveur a chaque ligne qu il la bien recu, de cette facon une fois que le serveur va fermer sa connexion on est sur que le client a bien tt recu.

Le hik c'est que j'ai refait un test et je n'obtenais pas la même chose, et je me suis apercu, que dans ton code serveur tu faisais :

sEcoute.close();

au lieu de
sClient.close();

Je me suis basé la dessus et tout le problème venait de la. Ce n'était pas la bonne socket que tu as fermé. Du coup dans mes précédents posts je t'ai proposé une usine à gaz, qui marche certes mais qui n'est pas super performante(bcp d envois reception de données inutiles).

Du coup je me rebase sur ce que tu avais fait précédemment et ca donne :

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(); 
                                    sClient.close();
                                    // et non sEcoute.close(); 
                                
                            }catch(Exception ex){System.out.println(ex.getMessage());} 
                        } 
                    }; 
                    threadlistpseudo.start(); 

Code client :

try { 
            ///state='c' =>connecté 
            String req1="select login from authentification where state='c'"; 
            Socket sClient =new Socket("localhost",3500); 
            PrintWriter out=new PrintWriter(sClient.getOutputStream(),true); 
            out.write(req1+ "\r\n"); 
            out.flush(); 
            
            BufferedReader in=new BufferedReader(new InputStreamReader(sClient.getInputStream())); 
            String req=new String(); 
            DefaultListModel dlm=new DefaultListModel(); 
            while((req=in.readLine()) != null) {
                dlm.addElement(req);
            } 
            JList lpseudo = new JList(dlm);
            System.out.println(dlm.getSize());
            sClient.close(); 
        } catch (Exception ex) {ex.printStackTrace();} 

Bonne chance et dsl encore,
Niroken

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
 V     V  U   U   QQQ    PPPP    CCC 
V V U U Q Q P P C
V V U U Q Q PPPP C
V V U U Q QQ P C
V UUU QQQQ P CCC
Q