int len = 0;  
        while ((len = m_InputStream.read(m_RecvBuf)) != -1) {  
            //执行操作
        }  

解决方案 »

  1.   


    我需要定长接收数据,定长包头,根据包头信息接收包数据。我是阻塞在read里面,这个一样的。
    大神们做安卓长连接,用datainputstream接收数据没有这问题?
      

  2.   


    我需要定长接收数据,定长包头,根据包头信息接收包数据。我是阻塞在read里面,这个一样的。
    大神们做安卓长连接,用datainputstream接收数据没有这问题?
    你这阻塞住,是因为没有12个字节啊,一直在等数据
      

  3.   


    我需要定长接收数据,定长包头,根据包头信息接收包数据。我是阻塞在read里面,这个一样的。
    大神们做安卓长连接,用datainputstream接收数据没有这问题?
    你这阻塞住,是因为没有12个字节啊,一直在等数据
    read我记得是三种情况会返回,一个接收完,一个流结束(Socket close),一个是异常。
    我服务器发送一个测试包是50个字节,阻塞的情况是安卓客服端接收完第某个数据包后,不知道为什么从哪里发了个reset给了服务端强制终止了tcp连接,但它read同时却不返回。然后我在服务端做任何操作也没办法让read返回,tcp连接肯定是断了。我就只能等心跳包send触发异常让read返回。
    测试包都一样的,有时候接收几个就reset了,有时候可以接收很多。
      

  4.   


    我需要定长接收数据,定长包头,根据包头信息接收包数据。我是阻塞在read里面,这个一样的。
    大神们做安卓长连接,用datainputstream接收数据没有这问题?
    你这阻塞住,是因为没有12个字节啊,一直在等数据
    read我记得是三种情况会返回,一个接收完,一个流结束(Socket close),一个是异常。
    我服务器发送一个测试包是50个字节,阻塞的情况是安卓客服端接收完第某个数据包后,不知道为什么从哪里发了个reset给了服务端强制终止了tcp连接,但它read同时却不返回。然后我在服务端做任何操作也没办法让read返回,tcp连接肯定是断了。我就只能等心跳包send触发异常让read返回。
    测试包都一样的,有时候接收几个就reset了,有时候可以接收很多。
    估计你的socket有问题
    可以先看看socket http://www.cnblogs.com/linzheng/archive/2011/01/23/1942328.html
      

  5.   


    我需要定长接收数据,定长包头,根据包头信息接收包数据。我是阻塞在read里面,这个一样的。
    大神们做安卓长连接,用datainputstream接收数据没有这问题?
    你这阻塞住,是因为没有12个字节啊,一直在等数据
    read我记得是三种情况会返回,一个接收完,一个流结束(Socket close),一个是异常。
    我服务器发送一个测试包是50个字节,阻塞的情况是安卓客服端接收完第某个数据包后,不知道为什么从哪里发了个reset给了服务端强制终止了tcp连接,但它read同时却不返回。然后我在服务端做任何操作也没办法让read返回,tcp连接肯定是断了。我就只能等心跳包send触发异常让read返回。
    测试包都一样的,有时候接收几个就reset了,有时候可以接收很多。
    估计你的socket有问题
    可以先看看socket http://www.cnblogs.com/linzheng/archive/2011/01/23/1942328.html
    Socket的使用一样的啊,创建,连接,得到输入输出流,接收发送,上一个安卓通信项目是字符串通信,用的bufferedreader   的readline 倒是稳定的。