【问题标题】:BufferedReader stuck on read. Wont read from SocketBufferedReader 卡在读取状态。不会从 Socket 读取
【发布时间】:2017-06-09 04:47:59
【问题描述】:

这里

try
{
    System.out.println("testIN");
    Socket socket = new Socket("10.0.0.16", 8090);
    while (socket.isConnected())
    {
        PrintWriter printWriter = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()), true);
        printWriter.println("[05]");
        printWriter.println("\n");
        System.out.println(printWriter.checkError());
        Thread.sleep(5000);
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        if(bufferedReader.ready())
            System.out.println("READ: "+bufferedReader.read());
        else
            System.out.println("error");
        bufferedReader.close();
        socket.close();
        break;
    }
} catch(Exception e) {
        System.out.println(e);
}

需要更改什么以便我可以读取服务器的响应。我无权访问服务器的代码,它在本地托管。

【问题讨论】:

  • 我在您的代码中根本看不到任何 readline 语句...您能检查一下您的代码吗...
  • read 和 readline 都不起作用
  • 卡在哪一行?如果它卡在System.out.println("READ: "+bufferedReader.read());,这意味着服务器没有发送任何内容,或者您​​已经阅读了所有要阅读的内容。
  • 谢谢,我认为这可能是问题所在。 @SteveSmith 我需要先了解有关服务器端代码的更多信息。

标签: java android sockets tcp-ip


【解决方案1】:

试试这个

try {
        System.out.println("testIN");
        Socket socket = new Socket("10.0.0.16", 8090);
        while (socket.isConnected()) {
            PrintWriter printWriter = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()), true);
            printWriter.println("[05]");
            printWriter.println("\n");
            System.out.println(printWriter.checkError());
            Thread.sleep(5000);
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));

            String data = null;
            if ((data = bufferedReader.readLine()) != null)
                System.out.println("READ: " + data);
            else
                System.out.println("error");
            bufferedReader.close();
            socket.close();
            break;
        }

    } catch (Exception e) {
        System.out.println(e);
    }

【讨论】:

  • 请补充您在 OPs 代码中发现的问题,以及您认为您的答案可以解决问题的原因。在拼盘上提供代码永远不会帮助任何人学习或理解(在大多数情况下)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-04
相关资源
最近更新 更多