| 12
 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
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 
 |  
private Socket skt;
private InputStream is;
private OutputStream os;
 
1 - connexion
          skt = new Socket(host, port);
          skt.setSoTimeout(timeout);
          is = skt.getInputStream();
          os = skt.getOutputStream();
2 - Envoi
          IoBuffer buffer = ......
          byte[] msg = new byte[buffer.limit() - buffer.position()];
          buffer.get(msg);
          os.write(msg);
3 - Reception
          byte[] buf = new byte[4192];
          int longuer = recevoirReponse(buf);
          //code de la methode recevoirReponse
          public int recevoirReponse(byte[] buf) throws Exception {
                int longuer = 0;
                try {
                     len = is.read(buf);
                } catch (Exception e) {}
                return longuer;
          }
aprés notre discution j'ai modifiée la phase 3 l'impklémentation de la méthode recevoirReponse comme suit
3-bis - Reception
          //déclaration
          BufferedReader in = null;
          SocketListener sl = null; //le thread qui va réagir à la réponse du 
                                           //serveur (l 'implémentation à la fin)
          public int recevoirReponse(byte[] buf) throws Exception {
                in = new BufferedReader(new InputStreamReader(is));
                sl = new SocketListener(in); // creation du thread
                sl.start();
                return sl.len;
          }
 
4 - implémentation du thread
          public class SocketListener extends Thread {
                    private BufferedReader in;
                    private boolean run = true;
                    int len;
                    //constructeur
                    public SocketListener(BufferedReader b) {
                              in=b;
                    }
                    public void finish() {
                              run = false;
                    }
 
                    public void run() {
                              len=0;
                              while (run) {
                                       try {
                                                len = in.read();
                                       } catch (IOException e) {}
                             }
                   }
         } | 
Partager