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;

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,768评论 0 33
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,742评论 18 399
  • Java经典问题算法大全 /*【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子...
    赵宇_阿特奇阅读 1,895评论 0 2
  • 2017年,善于把握机遇的企业们不是正在开源,就是走在去开源的路上…… 开源是不是就意味着免费? 开源企业就是要当...
    活动家阅读 245评论 0 0
  • 写个论文还要看几区的,心累,在这里查询http://www.letpub.com.cn/index.php?pag...
    鸭梨山大哎阅读 3,613评论 0 3