j'ai pas compris l'utilité de la derniere transformation a quoi sert elle?
merci
Version imprimable
j'ai pas compris l'utilité de la derniere transformation a quoi sert elle?
merci
Emetteur:Citation:
Envoyé par jlassiramzy
MaTrame t = new MaTrame(1,2.5,"toto");
byte[] binaire = // ... serialisation de t ...;
send(binaire);
Receveur:
byte[] binaire = getData();
MaTrame t = //... deserialisation de binaire ...
System.out.println( t.monint );
ah je vois! donc tu veux dire qu'aucun risque que les données soient erronées si j'ai bien saisi..en d'autres termes ce que tu envoies tu le reçois ( sauf panne réseau bien sur )
Non je n'irai pas jusque la. C'est juste que tu envoie/recupere directement des instances de classe (=des objets). Tu n'a pas a fabriquer une String par concatenation coté emetteur, puis a decouper ta String coté client.Citation:
Envoyé par jlassiramzy
Ok j'ai compris , ca c'est dans le cas plus simpl eet plus pratique; mais que dis tu uand on exige un format spécifique aux données a envoyer et même leur taille en Byte? comment pourrais t on utiliser le byte[] avec aisance et surtout récuperer le champ qu'il faut à l'emplacement qu'il faut? ca c'est difficile pour moi je l'avoue :oops:
Depuis Java 5 tu as:Citation:
Envoyé par jlassiramzy
- String.format() pour ecrire des chaines comme avec le printf() du C
- La classe "java.util.Scanner" pour analyser le contenu d'une chaine.
Oui mais je te parle d'un byte[] ? je ne sai pas si je me suis fais comprendre: je voulais dire que les données sont une successions de byte et chacune a un format ou une longueuer en byte bien précise voila!:D
arf. Dans ce cas tu as la classe: java.util.ArraysCitation:
Envoyé par jlassiramzy
avec des methodes statiques du genre:
byte[] Arrays.copyOfRange( byte[] original, int from, int to);
qui te retourne un "bout" du byte[].
peux tu l'illustrer avec un exemple stp!! je me sens un peu perdu la :(
T'abuserais pas un peu, quand meme ? :aie:Citation:
Envoyé par jlassiramzy
Bon alors, mettons que tu dois contruire une trame avec les 3 "blocs" d'octets suivants:
Pour construire la trame en concatenant les blocs, tu peux utiliser un ByteArrayOutputStream:Code:
1
2
3 byte[] b1 = new byte[] {1}; byte[] b2 = new byte[] {2,3}; byte[] b3 = new byte[] {4,5,6};
Pour redecouper ta trame en bloc coté reception, tu peux utiliser la classe java.util.Arrays:Code:
1
2
3
4
5
6
7
8
9
10
11 ByteArrayOutputStream bos = new ByteArrayOutputStream(); try { bos.write(b1); bos.write(b2); bos.write(b3); } catch (IOException e) { e.printStackTrace(); } byte[] bytearray = bos.toByteArray(); // bytearray contient alors [1, 2, 3, 4, 5, 6]
Code:
1
2
3 byte[] b1 = Arrays.copyOfRange(bytearray, 0, 1); byte[] b2 = Arrays.copyOfRange(bytearray, 1, 3); byte[] b3 = Arrays.copyOfRange(bytearray, 3, 6);
merci :)
je vais essayer ca et je te tiendrai au courant :)