以前有個需求,因爲H5端不支持TCPSocket通訊,因而中間搭了個安卓框架做爲通訊的介質,在開發中遇到一個問題,當後端傳一個比較大的數據上來時,一條完整的數據會沒有規矩的分紅若干個包,每條數據可能不存在完整的包頭包尾。因此我想了一個用緩存數據的方法來對數據進行拼包。json
後端會對每一串數據添加包頭(十六進制02)和包尾(十六進制03)進行上報,分包後的數據解析後會有四種狀況:後端
一、 包頭*********包尾 或 包頭*******包尾包頭*******包尾緩存
二、 包頭*******框架
三、 ********blog
四、 *********包尾接口
例如設備列表數據上報,當有幾十只設備的數據時,後端會對每十隻設備的數據進行包頭包尾的添加。開發
上圖是一條完整的數據。class
每串json有字段TotalNumber(總共的設備數)AlreadyReportNumber(已上報的設備數)根據兩個數據的比較來判斷數據是否已經上傳完。變量
由於全部上報的數據只用一個接口來接受,因此在處理數據時還要判斷數據類型,項目中所用思路如下:List
由於進行分包的是Type爲DevList的數據,後端傳上來還會有其餘類型的數據,因此我會將其餘類型的數據去除包頭包尾後單獨輸出,若是是分包的DevList數據,會用一個變量緩存,再拼接到下一串上傳的數據中。