int count = 0;
                   while (count == 0) {
                    count = mmInStream.available();//输入流中的数据个数。
                   }
                   System.out.println("字符串总长度为:"+count);
                 int readCount = 0; // 已经成功读取的字节的个数
                   while (readCount < count) {
                    readCount += mmInStream.read(buffer, readCount, count - readCount);
                   }
就是这段代码,如果发送端发送10个字符,我这里有时会先接收一个字符,然后又接收9个。不是整体一下子接收过来。我把上述代码放到了一个线程的while循环中。

解决方案 »

  1.   

    想问一下 “count = mmInStream.available();  //输入流中的数据个数” ,这句话中的“输入流中的数据个数”是指输入流的总长度吗,而不是流的分批发送的数据?
      

  2.   

    指的是流的分批发送的数据,若对方发送5个字节,可能第一次接收到第一个字节,count = mInputStream.available()返回的是1;第二次获取后面四个字节count = mInputStream.available()返回的是4
      

  3.   

    按照协议的数据格式,只有当收到完整的包时才跳出read所在的循环即可,具体逻辑根据协议格式而不同