需要通过套接字发送大小未知的字节数组。当我尝试将字节数组写入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();