Java PrintWriter不发送字节数组

时间:2012-10-04 11:34:32

标签: java sockets

需要通过套接字发送未知大小的字节数组。当我尝试将字节数组写入printwriter时

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

它是在服务器上收到的,但是只有5-6个字符的字符串总是从[B @ .....开始但是当我通过输出流发送它时

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

正确接收服务器。但问题是在第二个选项中“Hello World”字符串不会通过服务器。我希望将这两件事交付给服务器。

我该怎么做?

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分:2)

byteArray.toString()会返回byteArray的人类可读形式。即使对于数组,它也绝不是人类可读的。

如果您想将byteArray转移为String,则应使用

String str = new String(bytes, Charset.defaultCharset());//Specify different charset value if required.