我写套接字客户端:

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

消息变成这样:

告诉我为什么?如何正确发送UTF消息?

最佳答案

writeUTF() documentation说:

首先,将两个字节写入输出流,就像通过writeShort方法给出要跟随的字节数一样。该值是实际写入的字节数,而不是字符串的长度。

您可以自己将字符串编码为utf-8,然后使用 write() 将结果字节数组发送到服务器:

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

07-25 20:14