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