Bonjour,
Je test la communication entre plusieurs programmes via des sockets. Et je me pose la question de la nécessité de procéder comme suis pour effectuer une lecture :
plutot que comme ca :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 ... DataInputStream dis = null; ... dis = new DataInputStream(serviceSocket.getInputStream()); ... // code pour la lecture byte[] tempBytes = new byte[dis.readInt()]; // lit un int qui représente la longueur du message qui suit int length = 0; while(length < tempBytes.length){ length += dis.read(tempBytes, length, tempBytes.length-length); } String msgRecu = new String(tempBytes, "ISO-8859-1");
Je me demande si de faire des boucles comme ca est nécessaire ou si ca fait double emploi avec l'implémentaion des flux (haut niveau). Meme question pour l'envoi : Est il judicieux de faire une boucle afin de ne pas envoyer de trop gros message en une fois.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 byte[] tempBytes = new byte[dis.readInt()]; // lit un int qui représente la longueur du message qui suit dis.read(tempBytes, 0, tempBytes.length);
pour infos le code de l'ecriture
Merci, Fred.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 ByteArrayOutputStream baos = null; DataOutputStream dos = null; ... dos = new DataOutputStream(serviceSocket.getOutputStream()); baos = new ByteArrayOutputStream(); .... //code pour l'écriture String toSend = "CONNECT"; baos.reset(); new DataOutputStream(baos).writeInt(toSend.length()); baos.write(toSend.getBytes("ISO-8859-1")); dos.write(baos.toByteArray(), 0, baos.toByteArray().length); dos.flush();
Partager