需要通过套接字发送未知大小的字节数组。当我尝试将字节数组写入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”字符串不会通过服务器。我希望将这两件事交付给服务器。
我该怎么做?
答案 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.