Ajouter un commentaire

Niroken

Hello,

Voici ce qu'il se passe :
- Ton instance serveur écrit dans le flux sortant attaché à la socket ouverte... puis une fois qu'elle a fini, le thread meurt et la socket se ferme, sans se soucier de ce qui a été lu coté client.
- Ton instance client lit à son rythme sur le flux entrant lié à la socket ouverte ce que le serveur lui envoit, le hic c'est que si la socket est fermé avant que le client aie tt lu, et bien tu vas avoir une exception qui va ressortir.

Ce que je te suggère, c'est d'implémenter une mini conversation client-serveur. dès que le serveur envoie une ligne, le client lui en renvoit une pour dire qu'il la bien lu, de cette facon quand le serveur fermera la socket, le client aura bien tt recu.

Coté implémentation, ca donnerait qq chose comme ca :

Cote client :

BufferedReader in=new BufferedReader(new InputStreamReader(sClient.getInputStream())); 
            String req=in.readLine(); 
            System.out.println(req);
            DefaultListModel dlm=new DefaultListModel(); 
            JList lpseudo = new JList(); 
            // ici on ajoute le premier élément 
            dlm.addElement(req);
            out.write("OK\r\n"); 
            out.flush();
            while(req!=null) 
            { 
                try {
                    req=in.readLine();
                    out.write("OK\r\n"); 
                    out.flush();
                    dlm.addElement(req);
                    System.out.println(req);  
                } catch (SocketException e) {
                    // On met req a null pour sortir de la 
                    // boucle si le serveur interromp la connexion
                    req = null;
                }
            }
            
            lpseudo.setModel(dlm);
            System.out.print(lpseudo.getModel().getSize());
            
            sClient.close(); 

Cote serveur :
while(rst.next()) 
{ 
    out.write(rst.getString(1)+ "\r\n"); 
    out.flush();
    in.readLine(); 
} 
out.flush(); 
sEcoute.close(); 

Bonne chance,
Niroken

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
  AA   BBBB   X   X  N   N  DDD  
A A B B X X NN N D D
AAAA BBBB X N N N D D
A A B B X X N NN D D
A A BBBB X X N N DDD