之前有個需求,由于H5端不支持TCPSocket通信,于是中間搭了個安卓框架作為通信的介質,在開發中遇到一個問題,當后端傳一個比較大的資料上來時,一條完整的資料會沒有規矩的分成若干個包,每條資料可能不存在完整的包頭包尾,所以我想了一個用快取資料的方法來對資料進行拼包,
后端會對每一串資料添加包頭(十六進制02)和包尾(十六進制03)進行上報,分包后的資料決議后會有四種情況:
1、 包頭*********包尾 或 包頭*******包尾包頭*******包尾
2、 包頭*******
3、 ********
4、 *********包尾
例如設備串列資料上報,當有幾十只設備的資料時,后端會對每十只設備的資料進行包頭包尾的添加,

上圖是一條完整的資料,
每串json有欄位TotalNumber(總共的設備數)AlreadyReportNumber(已上報的設備數)根據兩個資料的比較來判斷資料是否已經上傳完,
因為所有上報的資料只用一個介面來接受,所以在處理資料時還要判斷資料型別,專案中所用思路以下:

因為進行分包的是Type為DevList的資料,后端傳上來還會有其他型別的資料,所以我會將其他型別的資料去除包頭包尾后單獨輸出,如果是分包的DevList資料,會用一個變數快取,再拼接到下一串上傳的資料中,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/21603.html
標籤:HTML5
上一篇:Error: Invalid CSS after "xxx": expected 1 selector or at-rule, was "{}"
