Java 当我使用inputstream阅读器时,我可以';从缓冲读取器读取数据后,t退出while循环

Java 当我使用inputstream阅读器时,我可以';从缓冲读取器读取数据后,t退出while循环,java,android,sockets,bufferedreader,Java,Android,Sockets,Bufferedreader,当我试图从缓冲读取器读取数据时,我得到了数据。但是,如果数字等于null,我就无法退出while循环。readLine()在流时返回null,而不是在之前,并且只有当对等方关闭连接时,套接字上的流结束才会发生。您的期望似乎放错了地方。这是因为您无法理解readline函数及其实现。您正在从缓冲区读取数据,并将数据与null进行比较,这显然不是您想要的。下面是我如何从TCP套接字读取数据 Socket socket = serverSocket.accept();

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

readLine()
在流时返回null,而不是在之前,并且只有当对等方关闭连接时,套接字上的流结束才会发生。您的期望似乎放错了地方。

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

 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循环。我得到的消息如下:“D/jdwp:processIncoming D/jdwp:handlePacket:cmd=0x6,cmdSet=0x1,len=0xB,id=0x2873C,flags=0x0,dataLen=0x0”。当
number
为空时,您将退出while循环。没有两条路可走。可能您希望它在错误的情况下神奇地变为null?我得到了这样的消息“D/jdwp:processIncoming D/jdwp:handlePacket:cmd=0x6,cmdSet=0x1,len=0xB,id=0x2873C,flags=0x0,dataLen=0x0”,没有关闭连接的任何其他方法做什么?定义您的需求。在不关闭对等连接的情况下退出while循环,您所要做的就是定义退出
while
循环的条件,并且您已经回答了自己的问题。没有其他人能为你们做到这一点。他的问题是,他想在某些其他(未说明的)条件下停止阅读,而不是在流的末尾。这个密码解决不了问题,我听上去很清楚。。如果是这样的话,没有其他方法可以结束循环。
while(statement == true){
    int count = bufferedInputStream.read(buffer);
    if (count == -1){
        // Socket has been closed
    } else {
        // Data has been read.
        // Do comparison here.
    }
}