在我的服务器代码中:
pw = new PrintWriter(stream);
br = new BufferedReader(new InputStreamReader(
socket.getInputStream(), "UTF-8"));
在我的客户端代码中
BufferedReader br = new BufferedReader(new InputStreamReader(
clientSocket.getInputStream(), "UTF-8"));
OutputStreamWriter stream = new OutputStreamWriter(clientSocket.getOutputStream(), "UTF-8");
PrintWriter pw = new PrintWriter(stream);
然后 首先,服务器使用: pw.println("确定"); pw.flush();
客户端接收成功
之后,服务器使用:
pw.println("TRUE")
pw.flush();
这一次,客户端收到一个包含未知字符的字符串
\ufffd\ufffdTRUE
然后我继续向客户端发送消息,它会在每个句子之前收到一些\ufffd。
谁能帮我解决这个问题?
最佳答案
我可以想象服务器重新发送字节顺序标记(0xFFFE 0xFFFF),这些标记在客户端被替换字符(0xFFFD)替换。
在服务器端每次发送之前,您是否重新创建打印编写器?
关于java - 客户端通过套接字从服务器接收消息时出现一些问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6357556/