需要通过套接字发送大小未知的字节数组。当我尝试将字节数组写入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”字符串无法传递到服务器。我希望将这两件事都交付给服务器。

我该怎么办?

最佳答案

您正在尝试将二进制和文本混合在一起,这肯定会造成混淆。我建议您使用其中之一。

// 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();

10-07 18:22