2012-10-04 51 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.