2012-02-02 90 views
5

我寫的套接字客戶端:安卓插座DataOutputStream.writeUTF

clientSocket = new Socket("192.168.1.102", 15780); 
outToServer = new DataOutputStream(clientSocket.getOutputStream()); 

所有作品。但我不會發送給服務器UTF -8格式的消息和這樣做的:

outToServer.writeBytes("msg#");//server tag 
outToServer.writeUTF("hello"); 
//outToServer.writeUTF(str); //or another string 
outToServer.writeBytes("\n"); 
outToServer.flush(); 

消息變成了這樣:

secret byte

請告訴我爲什麼?如何正確發送UTF消息?

回答

15

writeUTF() documentation說:

首先,兩個字節被寫入到輸出流中使用writeShort方法給予字節跟隨的數目。該值是實際寫出的字節數,而不是字符串的長度。

您可以自己編碼字符串爲UTF-8,然後使用write()發送所產生的字節數組服務器:

byte[] buf = "hello".getBytes("UTF-8"); 
outToServer.write(buf, 0, buf.length);