【问题标题】:Reading stream from infinite loop从无限循环读取流
【发布时间】:2019-11-25 10:14:04
【问题描述】:

我正在为一个小项目尝试一些 Java 套接字编程。我遇到了从外部进程读取无限 InputStream 的问题。程序进入无限循环。

我怀疑 readLine() 必须在 EOF 之前读取流。

我已经放了一些打印语句,我确信程序到达了 while 循环。

这是我的方法:

    public void run() throws IOException {
        Process p = Runtime.getRuntime() .exec(exe);

        BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
        String line;

        while((line = in.readLine()) != null){
            System.out.println(line);
            dout.writeUTF(" " + line + " yes!");
            dout.flush();
        }

        in.close();
        dout.close();
        s.close();
        ss.close();
    }

【问题讨论】:

  • 你忘了说你的问题是什么。
  • 谢谢!补充说程序进入无限循环
  • 在第一行开始的进程退出之前,您不会到达 EOF。在那之前,调用readLine 会阻塞
  • 你在 Runtime.getRuntime(exec()); 中使用了什么命令?
  • 这是一个简单的编译 C 程序,在无限循环中打印一条消息

标签: java sockets stream


【解决方案1】:

正如@codeflush.dev 提到的那样,流没有到达 EOF,因此 readLine 不是一个可行的选择。

【讨论】:

    猜你喜欢
    • 2012-03-12
    • 1970-01-01
    • 2021-06-27
    • 2021-12-13
    • 1970-01-01
    • 2012-08-20
    • 2019-09-23
    • 2020-01-17
    • 1970-01-01
    相关资源
    最近更新 更多