app项目中遇到TCP分包,H5端对分包进行拼包

       以前有个需求,因为H5端不支持TCPSocket通讯,因而中间搭了个安卓框架做为通讯的介质,在开发中遇到一个问题,当后端传一个比较大的数据上来时,一条完整的数据会没有规矩的分红若干个包,每条数据可能不存在完整的包头包尾。因此我想了一个用缓存数据的方法来对数据进行拼包。json

后端会对每一串数据添加包头(十六进制02)和包尾(十六进制03)进行上报,分包后的数据解析后会有四种状况:后端

一、  包头*********包尾 或 包头*******包尾包头*******包尾缓存

二、  包头*******框架

三、  ********blog

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

例如设备列表数据上报,当有几十只设备的数据时,后端会对每十只设备的数据进行包头包尾的添加。开发

上图是一条完整的数据。class

每串json有字段TotalNumber(总共的设备数)AlreadyReportNumber(已上报的设备数)根据两个数据的比较来判断数据是否已经上传完。变量

由于全部上报的数据只用一个接口来接受,因此在处理数据时还要判断数据类型,项目中所用思路如下:List

由于进行分包的是Type为DevList的数据,后端传上来还会有其余类型的数据,因此我会将其余类型的数据去除包头包尾后单独输出,若是是分包的DevList数据,会用一个变量缓存,再拼接到下一串上传的数据中。

相关文章
相关标签/搜索