Les String c bien mais les Octets c'est mieux...

Résolu
omcougar Messages postés 152 Date d'inscription mardi 4 mai 2004 Statut Membre Dernière intervention 8 octobre 2008 - 20 sept. 2006 à 10:08
cs_stillfelil Messages postés 108 Date d'inscription samedi 31 juillet 2004 Statut Membre Dernière intervention 12 septembre 2009 - 20 sept. 2006 à 16:40
Bonjour,






Je joue un peu avec les com. TCP... j'ai trouvé plein d'exemples sur ce site pour monter une petite architecture client-serveur simple transferant des string...  j'utilise donc les objets suivants:

BufferedReader

B_In

PrintStream

S_Out

C'est bien, mais j'ai rapidement rencontré des problemes quand j'ai voulu transferer autre chose qu'un texte tapé manuellement, certain caracterers mettant vite le bazar....

quels sont les objets que je dois utiliser pour transférer des tableaux d'octets  byte[] plutot que des strings ?

Merci.

5 réponses

cs_stillfelil Messages postés 108 Date d'inscription samedi 31 juillet 2004 Statut Membre Dernière intervention 12 septembre 2009 3
20 sept. 2006 à 15:48
Salut
ya une methode dans la class String qui s'appel   byte[] getBytes()
exemple
String str = "hello";
byte[] octets = str.getBytes();
et pour envoyer le tout ,utilse la class java.io.OutputStream
et java.io.InputStream pour la reception
attention ca genere des exception
donc :
try
{
//...
}
catch(java.io.IOException)
{
}
oblige
et comme ca tu envoi octets au lieu de str
je ne sais pas si ca repond a ta question
;-)
3
omcougar Messages postés 152 Date d'inscription mardi 4 mai 2004 Statut Membre Dernière intervention 8 octobre 2008 1
20 sept. 2006 à 16:18
oui... voila ce que j'ai créé:

OUT=
clientSocket.getOutputStream();

IN=
clientSocket.getInputStream();
bien pour envoyer j'utilise :

try{

   OUT.write(bytes[]);

   OUT.flush();
}
catch(IOException e){}

Ca a l'air bon

mais pour recevoir je ne vois pas comment récuperer le tableau de byte...

try{

   IN.read()
;  <- me retourne un entier pas un tableau de byte
}
catch(IOException e){}
0
omcougar Messages postés 152 Date d'inscription mardi 4 mai 2004 Statut Membre Dernière intervention 8 octobre 2008 1
20 sept. 2006 à 16:32
j'ai capté...

pour lire je fais





byte



[] B=new



byte



[100];



IN.read(B);





et mon retour se trouve dans B
0
cs_stillfelil Messages postés 108 Date d'inscription samedi 31 juillet 2004 Statut Membre Dernière intervention 12 septembre 2009 3
20 sept. 2006 à 16:38
pas
OUT.write(bytes[]);
mais tu doit mettre ton tableau d'ectets a la pace
//-------------------

et ben oui, l'entier correspond a un byte
pour envoyer un fichier par exmple tu va faire
int i ;
char c;
byte b;
while( (i = IN.read())!= -1 )
{
c = (char)i;    //la tu la en caractere
b = (byte) i;  //la tu la en byte
//et a partir de la ten fait ce que tu veu
}

Ah oui noublie pas devoyer le -1 pour faire savoir la fin de ton flux
comme ca
int i = -1;
byte b = (byte) i;
//et tu l'envoi

;-)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_stillfelil Messages postés 108 Date d'inscription samedi 31 juillet 2004 Statut Membre Dernière intervention 12 septembre 2009 3
20 sept. 2006 à 16:40
Oui execte ;la c'est radical (lol)
mais pas toujour util

;-)
0
Rejoignez-nous