2011-02-24 13 views
1

作为标题。Android套接字播放不好尼斯

这里是代码:

InputStream is = tcp.getInputStream(); 
      int bytesRead = 0; 
      do{ 
       byte[] byteIn = new byte[16* 1024]; 
       bytesRead = is.read(byteIn, 0, 16*1024); 
       pStore.storeData(byteIn, 1024); 
       processMessage(pStore.readAll()); 
       pStore.clear();    
      }while(bytesRead>0); 

问题我已经是它永远不会到达while循环的结束。任何建议将非常感激。

谢谢:)

回答

3

的Javadoc到InputStream.read()说:

此方法一直阻塞输入数据 提供

这是你可能会看到什么。

您可以用InputStream.available()测试是否有要首先读取任何数据。

+0

没有,它检索数据,但它不会永远离开循环。它通过循环,即它不会在调试器中挂在该语句上,但似乎永远不会到达流的末尾。它真的很烦人,因为这就是我知道你应该这样做的方式...... – Taffy

+1

它无法知道它已经到达流的末尾,因为当它阻止了你希望发现的呼叫时,有数据,在这一点上,它不再表明它已经到了最后,因为它不再存在。它将停止的唯一方法是响应错误,可能(最终)失去连接。 –

+0

好的,谢谢你们,非常感谢:) – Taffy