InputStreamReader readLine方法返回错误的字符串

时间:2018-11-07 19:06:17

标签: java android

我正在尝试通过套接字从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();
   }
}

1 个答案:

答案 0 :(得分:1)

您应该使用DataInputStream而不是InputStreamReader。这是您问题的根源

InputStreamReader reader = new DataInputStream(socket.getInputStream()));
String inStr = reader.readUTF();