2
バイトデータを破損させずに処理する方法が問題になりました。ここに私のコードですデータを破損することなくバイトストリームを処理する方法
...
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();
...
ここでは何も問題はないようです。私はC2
よう
F8 F0 F0 C2 20 00 00 80 00 00
少数のデータのような16進文字列を得た場合でも、3F
に変換されます。私はこれを私のログ&リモートサーバのログにも見ることができました。
まず、オーバーフローすると思われます。しかし、これらのデータは16進文字列として扱われ、別のサーバーに送信されるため、この疑いが克服されます。
私はこれについて何が起こっているのか分からないので、誰かがこの問題について知っていれば、本当に助けをすることができます。
ああ、そうですよ!私の他のテスト文字列が正しく渡されたので、私のコードに間違いがないと思った。 – Kaninchen