app項目中遇到TCP分包,H5端對分包進行拼包

       以前有個需求,因爲H5端不支持TCPSocket通訊,因而中間搭了個安卓框架做爲通訊的介質,在開發中遇到一個問題,當後端傳一個比較大的數據上來時,一條完整的數據會沒有規矩的分紅若干個包,每條數據可能不存在完整的包頭包尾。因此我想了一個用緩存數據的方法來對數據進行拼包。json

後端會對每一串數據添加包頭(十六進制02)和包尾(十六進制03)進行上報,分包後的數據解析後會有四種狀況:後端

一、  包頭*********包尾 或 包頭*******包尾包頭*******包尾緩存

二、  包頭*******框架

三、  ********blog

四、  *********包尾接口

例如設備列表數據上報,當有幾十只設備的數據時,後端會對每十隻設備的數據進行包頭包尾的添加。開發

上圖是一條完整的數據。class

每串json有字段TotalNumber(總共的設備數)AlreadyReportNumber(已上報的設備數)根據兩個數據的比較來判斷數據是否已經上傳完。變量

由於全部上報的數據只用一個接口來接受,因此在處理數據時還要判斷數據類型,項目中所用思路如下:List

由於進行分包的是Type爲DevList的數據,後端傳上來還會有其餘類型的數據,因此我會將其餘類型的數據去除包頭包尾後單獨輸出,若是是分包的DevList數據,會用一個變量緩存,再拼接到下一串上傳的數據中。

相關文章
相關標籤/搜索