Ich habe ein Problem, wie man Bytedaten behandelt, ohne sie zu beschädigen. Hier ist mein CodeWie man Byte-Datenstrom ohne korrumpierende Daten behandelt
...
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();
...
Es scheint kein Problem hier. Aber wenn ich einen Hex-String bekam wie
F8 F0 F0 C2 20 00 00 80 00 00
wenige Daten wie C2
wird in 3F
gedreht werden. Ich konnte dies auch in meinem Protokoll & Remote-Server-Protokoll sehen.
Zuerst vermute ich, dass es der Überlauf sein wird. Da diese Daten jedoch als Hex-String behandelt und an einen anderen Server gesendet werden, wird dieser Verdacht durchkreuzt.
Ich habe keine Ahnung, was hier vor sich geht, also könnte ich wirklich Hilfe gebrauchen, wenn jemand dieses Problem kennt.
Ah, du hast recht! Meine andere Testzeichenkette hat es korrekt bestanden, also dachte ich, dass mein Code nichts falsches hat. – Kaninchen