BufferedReader inputstream 阻塞直到它接收到第一个输入

BufferedReader inputstream blocks only until it receives the first input

我正在使用套接字实现即时消息传递。

我在客户端有以下Java代码:

while ( true )
    checkInputStream();

函数如下:

private void checkInputStream() throws IOException
{   
    //prints once, but after the first input arrives, it prints infinitely
    Log.i( "MY_TAG", "CHECKING INPUT STREAM");
    String inputLine;

    //inputStream is a BufferedReader object
    while ((inputLine = inputStream.readLine()) != null) 
    {
                //code                                                                                       
    }   
}

问题

我得到的行为是 readline() 阻塞,直到它收到第一个输入(这太棒了)。但是,一旦我向它发送第一条以换行符结尾的消息,它就会一遍又一遍地循环,而不管我是否看到发送了更多输入。

问题

这是正常行为吗?

如果是,我怎样才能 readline() 阻塞直到更多输入到达?

为什么我在乎

我希望它像第一次输入一样保持阻塞的原因是因为我能感觉到 android phone 我正在测试过热。

how can I get readline() to block until more input arrives?

确实阻塞直到更多输入到达。你的问题是你在两个嵌套循环中调用它,其中一个忽略了流的结尾

删除外部 while (true) 循环。您已经在方法内部循环直到流结束。如果您也循环调用该方法,您将在流的末尾永远旋转。

从代码中删除 while(true) 循环