J'ai un problème de gestion des données d'octet sans les corrompre. Voici mon codeComment gérer le flux d'octets sans corrompre les données
...
byte[] b = new byte[1000];
// read input stream
BufferedInputStream inData = new BufferedInputStream(socket.getInputStream());
int length = inData.read(b);
String data = new String(b, 0, length);
if (Log4j.log.isEnabledFor(Level.INFO)) {
Log4j.log.info("Data Length: " + length
+ ", Received data: " + data);
}
...
// start a new socket to other server
...
BufferedOutputStream out = new BufferedOutputStream(remote.getOutputStream());
out.write(data.getBytes());
out.flush();
...
Cela ne semble pas poser de problème ici. Mais si je suis une chaîne hexagonale comme
F8 F0 F0 C2 20 00 00 80 00 00
quelques données comme C2
seront transformées en 3F
. Je pouvais voir cela dans mon journal & journal du serveur distant aussi. Dans un premier temps, je soupçonne que ce sera le débordement. Mais puisque ces données seront traitées comme Hex String et envoyées à un autre serveur, ce soupçon sera croisé. Je n'ai pas la moindre idée de ce qui se passe à ce sujet, donc je pourrais vraiment utiliser de l'aide si quelqu'un sait à propos de ce problème.
Ah, vous avez raison! mon autre chaîne de test l'a passé correctement, donc j'ai pensé que mon code n'avait rien de mal. – Kaninchen