Android开发之指令粘包处理

粘包处理主要用于指令批量接收的时候可能会出现不完整包的情况

这里以这样的协议指令为例:

帧头+数据长度+实际数据+校验和+帧尾


/**

  * 黏包处理

  **/

private static String tempCmd="";//临时半包指令内容,用于指令拼接

//获取正式的数据

public static String[]  getTrueData(String data,String head,String end) {

           data = data.toLowerCase();

           boolean  endFlag = end.equals(data.substring(data.length() -2,data.length()));

           String[] s =new  String[stringSub(data,end + head) +1];

           int  num =0;

          for(inti =0;i < s.length;i++) {

                  data = data.substring(num);

                  num = data.indexOf(end + head) +2;

                 if(num ==1) {

                         num = data.length();

                   }

                 if(i ==0) {

                       String t = data.substring(0,num);

                       if(t.substring(0,2).equals(head)) {

                       tempCmd="";

                 }

                s[0] =tempCmd+ t;

         }else{

               s[i] = data.substring(0,num);

               if(i == (s.length-1) && (!endFlag)) {

                      tempCmd= s[i];

               }

        }

}

  return s;

}

你可能感兴趣的:(Android开发之指令粘包处理)