我正在尝试通过套接字从Java服务器向Android客户端发送字符串。 InputStreamReader的read方法返回的不是显示正确的字符串“ OK
”,而是返回
“ ��OK
”。
服务器代码如下:
public void run() {
try {
DataOutputStream dOut = new DataOutputStream(socket.getOutputStream());
dOut.writeUTF("OK");
dOut.flush();
dOut.close();
socket.close();
System.out.println("Disconnected from client number: " + id);
} catch (IOException ex) {
Logger.getLogger(ThreadImpl.class.getName()).log(Level.SEVERE, null, ex);
}
}
客户端的代码如下:
public void run() {
try {
Socket socket = null;
try {
socket = new Socket("10.0.2.2", 1978);
} catch (IOException e) {
e.printStackTrace();
}
String serverRes = null;
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
ServerRes = reader.readLine();
System.out.println(ServerRes);
reader.close();
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
答案 0 :(得分:1)
您应该使用DataInputStream而不是InputStreamReader。这是您问题的根源
InputStreamReader reader = new DataInputStream(socket.getInputStream()));
String inStr = reader.readUTF();