而从输入流读取时仅循环迭代一次



我是安卓的初学者,我正在努力InputStream读取数据。我使用 while 循环连续读取数据。但是在使用断点进行调试时,while 循环只运行一次。请帮助我。

我的可运行类是

static class Connect implements Runnable {
    @Override
    public void run() {
        try {
            socket = new Socket("192.168.43.79", 23);
            outputStream = socket.getOutputStream();
            inputStream = socket.getInputStream();
            connected = true;
            while(connected) {
                try {
                    p = IOUtils.toString(inputStream, "ASCII");
                }
                catch (IOException e){
                    e.printStackTrace();
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        catch (Throwable e){
            e.printStackTrace();
        }

    }
}

仅通过查看您的代码,我可以猜测IOUtils.toString(..)正在抛出IOException,并且该异常导致您的程序退出while循环,而是跳转到catch(..)块。

如果你能给出e.printStackTrace()的输出,那将是非常有帮助的。没有它,我不能告诉你更多。

connected是一个非局部变量,因此任何定义可见的代码都可以更改它。

如果确实没有抛出异常,那么一定有其他代码更改该变量。

您的代码片段甚至不包含变量的声明(因此它不会按原样编译)。但我猜更改变量的代码与您显示的内容相去甚远。为了确定问题,我建议您搜索connected的定义并查看其所有用途。

最新更新