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,775評論 0 33
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,767評論 18 399
  • Java經典問題算法大全 /*【程序1】 題目:古典問題:有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子...
    趙宇_阿特奇閱讀 1,916評論 0 2
  • 2017年,善于把握機遇的企業們不是正在開源,就是走在去開源的路上…… 開源是不是就意味著免費? 開源企業就是要當...
    活動家閱讀 245評論 0 0
  • 寫個論文還要看幾區的,心累,在這里查詢http://www.letpub.com.cn/index.php?pag...
    鴨梨山大哎閱讀 3,715評論 0 3