1

不明なサイズのバイト配列をソケット経由で送信する必要があります。次のようにバイト配列をprintwriterに書き込もうとすると

        writeServer = new PrintWriter(socketconnection.getOutputStream());
        writeServer.flush();
        writeServer.println("Hello World");
        writeServer.println(byteArray.toString());

サーバーで受信されますが、常に [B@..... から始まる 5 ~ 6 文字の文字列のみですが、次のような出力ストリームを介して送信すると

        writeServer.println("Hello World");
        socketconnection.getOutputStream().write(byteArray);

サーバーで正しく受信されます。しかし問題は、「Hello World」文字列がサーバーに到達しない 2 番目のオプションにあります。両方をサーバーに配信したい。

どうすればいいですか?

4

2 に答える 2

2

混乱を招く可能性のあるバイナリとテキストを混在させようとしています。どちらかを使用することをお勧めします。

// as text
PrintWriter pw = new PrintWriter(socketconnection.getOutputStream());
pw.println("Hello World");
pw.println(new String(byteArray, charSet);
pw.flush();

また

// as binary
BufferedOutputStream out = socketconnection.getOutputStream();
out.write("Hello World\n".getBytes(charSet));
out.write(byteArray);
out.write(`\n`);
out.flush();
于 2012-10-04T11:40:44.990 に答える
2

byteArray.toString()の人間が読める形式を返しますbyteArray。配列の場合でも、人間が判読できるものではありません。

byteArrayそのまま転送したい場合Stringは、使用する必要があります

String str = new String(bytes, Charset.defaultCharset());//Specify different charset value if required.
于 2012-10-04T11:57:58.010 に答える