1 2 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