[Flux] lecture : boucler ou pas ?
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 :
Code:
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"); |
plutot que comme ca :
Code:
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); |
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.
pour infos le code de l'ecriture
Code:
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(); |
Merci, Fred.