Réponse du serveur

Résolu
hindou23 Messages postés 42 Date d'inscription lundi 7 septembre 2009 Statut Membre Dernière intervention 20 octobre 2011 - 28 juil. 2011 à 12:11
hindou23 Messages postés 42 Date d'inscription lundi 7 septembre 2009 Statut Membre Dernière intervention 20 octobre 2011 - 1 août 2011 à 16:37
Bonjour tout le monde,

Quand je reçois ma réponse du serveur sous forme d'une chaine de caractére en hexadécimal les zéro ne s'affichent pas et une suite de zéro à la fin s'affichent comme par exemple :
Au lieu d'avoir 04 03 02 33 44 03 45 ,
Je recois 4 3 2 44 3 45 0000000000000000000000000000000000000000

Comment puis- je résoudre mon probléme?

Voici le code de la réception:

public String receive() {

String reponse = "";

char[] out = new char[1000];
try{

BufferedReader is = new BufferedReader (new InputStreamReader (this.socket.getInputStream()));
is.read (out);


// Close the Connection
is.close();
this.socket.close();

} catch (IOException e) {
System.err.println("Exception receive: " + e.getMessage());
return null;

}

for (int i = 0; i < out.length; i++) {


reponse = reponse + Integer.toString(out[i], 16).toUpperCase() +" ";}
return reponse;
}


Merci votre aide!!

6 réponses

cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
28 juil. 2011 à 14:14
Bonjour.
Pour les 0 à la fin, c'est parce que dans la boucle for, tu fais
for (int i = 0; i < out.length; i++) { 

au lieu de faire
for (int i = 0; i < nbread; i++) { 


avec
nbread = is.read (out);  


Pour la représentation de ta chaine en hexa essaye un truc du genre
reponse = reponse + String.format("%04X", Integer.toString(out[i], 16)) + " ";
3
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
29 juil. 2011 à 21:36
Bonjour, tu as obtenu un nombre impressionnant de réponses pour cette question sur de nombreux sujets.

http://www.javafr.com/forum/sujet-ENVOYER-HEXA-SERVEUR_1536581.aspx
http://www.javafr.com/forum/sujet-ENVOYER-CHAINE-CARACTERE-SERVEUR-VIA-SOCKETS_1537407.aspx

Mais tu sembles ne pas en tenir compte, on ne peut pas t'aider dans ces conditions.
0
hindou23 Messages postés 42 Date d'inscription lundi 7 septembre 2009 Statut Membre Dernière intervention 20 octobre 2011
1 août 2011 à 10:48
J'ai essayé de manipuler mon code de plusieurs facons pour avoir un bon résultat mais seule la premiére solution de Jonathan m'était utile...

Si j'avais bien trouvé mon objectif désiré pourquoi je continuerai à poser des questions sur le meme sujet!!!!
0
hindou23 Messages postés 42 Date d'inscription lundi 7 septembre 2009 Statut Membre Dernière intervention 20 octobre 2011
1 août 2011 à 11:45
Merci Laurent pour ta réponse, le probléme c'est que lorsque je mets dans ma boucle for (int i = 0; i < nbread; i++) pour int nbread = is.read (out)

Je ne recois plus aucune réponse du serveur et meme l'envoi de la chaine change .. Au lieu de lui envoyer une chaine en hexa , il la considére comme un String et la transforme en ASCII encore!!!!!!!!

Merci pour votre aide
0

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

Posez votre question
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
1 août 2011 à 12:04
Bonjour.

Que vaut la variable nbread ?
Normalement read() te renvois le nombre de caractères effectivement lu, ou -1 s'il est arrivé à la fin du flux.
C'est sans doute ton cas.
0
hindou23 Messages postés 42 Date d'inscription lundi 7 septembre 2009 Statut Membre Dernière intervention 20 octobre 2011
1 août 2011 à 16:37
mmmm!!! Oui t a tt a fait raison!!!

Mais pour l'affichage de la réponse en format de l'hexadecimal avec le 0 ca ne marche pas ..

Ca me donne l'erreur suivante quand je mets:
reponse = reponse + String.format("%x",Integer.toHexString(out[i])) + " ";

java.util.IllegalFormatConversionException: x != java.lang.String
java.util.Formatter$FormatSpecifier.failConversion(Unknown Source)
java.util.Formatter$FormatSpecifier.printInteger(Unknown Source)
java.util.Formatter$FormatSpecifier.print(Unknown Source)
java.util.Formatter.format(Unknown Source)
java.util.Formatter.format(Unknown Source)
java.lang.String.format(Unknown Source)
com.metier.CommuniServeur.receive(CommuniServeur.java:178)
com.action.InquiryThread.run(InquiryThread.java:35)
com.action.Connexion.execute(Connexion.java:63)
0
Rejoignez-nous