2012-10-04 50 views
1

需要通过套接字发送未知大小的字节数组。当我尝试写的字节数组的PrintWriter像Java 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

您正在尝试混合二进制文本和混淆的文本。我建议你使用一个或另一个。

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

byteArray.toString()将返回的byteArray人类可读的形式。即使对阵列来说,它从来都不是人类可读的。

如果要传输byteArrayString,那么你应该使用

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