有人可以向我解释为什么在注释掉 in.available()>0 的情况下这很好用,但是当我把它放回去时它会中断?
mySocket = new Socket("blahblah", 12345);
BufferedInputStream in = new BufferedInputStream(mySocket.getInputStream());
....
char result[] = new char[length];
for (int i = 0; i < length && !mySocket.isClosed() /*&& in.available()>0*/; i++){
result[i] = (char)in.read();
}
更具体地说:我正在制作一个 Android 应用程序,用户可以在其中搜索一个术语,该搜索被发送到空间中的某个东西,我以 xml 形式返回结果,并用它们做一些事情。当我返回的 xml 足够小(参见上面代码中的“长度”)时,代码在 in.available()>0 的情况下工作得很好。但如果长度很大,in.available() 返回 0。但是随着注释掉,一切都会继续顺利进行。
这是为什么?这是我需要担心和解决的问题吗?