Bonjour,
J'utilise des chaines XML pour faire dialoguer mon application client-server via Sockets. Pour le protocole, il faut spécifier un buffer (byte[]) avec une taille définie (256 en général). Cependant je souhaite la rendre infinie ou qui change au fur et à mesure selon ce qui arrive.
Le soucis est que 256 suffit amplement pour qques lignes mais si je m'envoie une image dans une chaine XML (<cmd name='picture' data='les dizaines de lignes de mon image' />), ca me l'envoie en plusieurs paquets et au moment de la transformation en XML j'obtiens une erreur car une chaine litérale (DATA) n'est pas fermée car elle est fermée qu'au 15ème paquet qui arrive ensuite. Ils arrivent séparés et ne se collent pas.
Donc comment y remédier ?!
Voici mon code (basique)
Merci à vous
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
20
21
22 private void runChat() { try { Byte[] bytes = new Byte[256]; // ici réside mon soucis car je recois en général des chaines de maxi 50charactères mais parfois pour les images c'est plus de l'ordre du millier !! String data = String.Empty; int i; while ((i = netStream.Read(bytes, 0, bytes.Length)) != 0) { data = BytesToString(bytes, i); // Traitement de la chaine XML reçue DataReceived(data); } } catch (Exception exe) { // traitement de l'exception } }
Partager