我写套接字客户端:
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()文档 http://docs.oracle.com/javase/7/docs/api/java/io/DataOutputStream.html#writeUTF%28java.lang.String%29 says:
首先,两个字节被写入输出流,就像通过 writeShort 方法给出后面的字节数一样。该值是实际写出的字节数,而不是字符串的长度。
您可以自己将字符串编码为 utf-8,然后使用以下命令将生成的字节数组发送到服务器write() http://docs.oracle.com/javase/7/docs/api/java/io/DataOutputStream.html#write%28byte%5B%5D,%20int,%20int%29:
byte[] buf = "hello".getBytes("UTF-8");
outToServer.write(buf, 0, buf.length);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)