当我使用输入流阅读器时,我无法在从缓冲的阅读器读取数据后退出while循环

时间:2017-01-12 10:44:57

标签: java android sockets bufferedreader

 Socket socket = serverSocket.accept();
                    InputStream is = socket.getInputStream();
                    InputStreamReader isr = new InputStreamReader(is);
                   BufferedReader br=new BufferedReader(isr);
                    String number;
                    list.clear();
                      while ((number=br.readLine())!=null){
                       list.add(number);

                        }

当我试图从缓冲的阅读器中读取数据时,我得到了数据。但是如果数字等于null,我就无法退出while循环。

2 个答案:

答案 0 :(得分:1)

readLine()在流处返回null,而不是之前,并且套接字上的流结束仅在对等方关闭连接时发生。你的期望似乎是错误的。

答案 1 :(得分:-1)

这是因为您无法理解readline函数及其实现。您正在从缓冲区读取数据并将数据与null进行比较,这显然不是您想要的。所以这就是我喜欢从TCP套接字读取数据的方法。

while(statement == true){
    int count = bufferedInputStream.read(buffer);
    if (count == -1){
        // Socket has been closed
    } else {
        // Data has been read.
        // Do comparison here.
    }
}

希望这有帮助。