2012-02-02 18 views
5

piszę gniazdo klienta:android gniazdo DataOutputStream.writeUTF

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

wszystko działa. Ale nie będę wysyłać do serwera UTF -8 wiadomości formatu i zrobić:

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

Komunikaty się tak:

secret byte

Powiedz mi proszę, dlaczego? Jak poprawnie wysyłać wiadomości UTF?

Odpowiedz

15

writeUTF() documentation mówi:

pierwsze dwa bajty są zapisywane do strumienia wyjściowego jakby metodą writeShort podając liczbę bajtów do naśladowania. Ta wartość określa liczbę faktycznie wypisanych bajtów, a nie długość napisu.

można zakodować ciąg jako UTF-8 siebie, a następnie wysłać otrzymaną tablicę bajtów do serwera za pomocą write():

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