需要通过套接字发送未知大小的字节数组。当我尝试将字节数组写入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“字符串无法到达服务器。我想把这两样东西都送到服务器上。
我怎么发动汽车呢?
发布于 2012-10-04 19:40:45
您正在尝试混合二进制和文本,这肯定会令人困惑。我建议你使用其中的一个。
// 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-04 19:57:58
byteArray.toString()将返回人类可读的byteArray格式。即使对于数组,它也永远不是人类可读的。
如果你想以String的形式传输byteArray,那么你应该使用
String str = new String(bytes, Charset.defaultCharset());//Specify different charset value if required.https://stackoverflow.com/questions/12726377
复制相似问题