本帖最后由 qq247300948 于 2014-08-03 21:59:03 编辑

解决方案 »

  1.   

    byte[] buffer = new byte[1024];  
            int len = 0;  
            while ((len = in.read(buffer)) != -1) {  
                //下面做正常读取的操作  
            }
      

  2.   

    嗯,不是这个。如果这样写byte[] buffer = new byte[1024];  
            int len = 0;  
            while ((len = in.read(buffer)) != -1) {  
                //下面做正常读取的操作  
            }
            //他就会往下执行,意思是,in.read(buffer)  得到的都是 -1 
      

  3.   

    先在服务器这边抓一下包看看,是不是你的socket 其实已经断开了呢?
      

  4.   


    说明流已经取完了啊 流取完了,不是就应该阻塞吗,关键是它没有阻塞呀。如果断开了,就不阻塞了和服务器没有断开,现在看来,貌似和MIUI的系统有关,
      

  5.   

    你怎么判断没有断开啊?
    可以收到服务器的消息呀,我的用mqtt协议,它有几个线程,一个收消息,一个发消息,一个心跳线程。。
      

  6.   


    你怎么判断没有断开啊?
    应该是,但是目前知道,MIUI对休眠做处理,休眠时用定时器必须时间大于5分钟才有用、
      

  7.   

    你怎么判断没有断开啊?
    可以收到服务器的消息呀,我的用mqtt协议,它有几个线程,一个收消息,一个发消息,一个心跳线程。。一般来说,读到-1肯定就是tcp连接已经断开了。建议你在服务器侧抓包试试看。