IOTGate系列之三 多规约配置——包含本地和控制台配置

本文介绍如何在本地配置多规约,以解决物联网设备数据传输中的粘包和拆包问题。通过详细配置规则和实例,展示了如何实现不同规约类型的兼容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

——本地多规约配置
概念与原理

多规约,即物联网设备的多种数据传输格式,每一种数据格式都会存在一套详细的规约来表述,作为开发人员,我们通过规约的表述,来解析和组装终端所认可的数据——纯粹个人理解。
网关是如何实现多规约呢?

  • 1.通过定位长度域在报文中的位置来实现多规约的兼容!
  • 2.通过为每一种规约分配固定的端口,保证同一端口连接同一规约类型的物理设备!当然,希望大家可以提供更多的实现多规约的思路,欢迎下方留言!
本地如何配置实现多规约
1.配置规则
标识含义默认值
pId规约编号
isBigEndian是否为大端模式(0为否,1为是)
beginHexVal报文第一字节十六进制值,统一为-1
lengthFieldOffset长度域偏移量(从左至右,从1开始计数)
lengthFieldLength长度域本身所占字节长度
isDataLenthIncludeLenthFieldLenth长度域表示的字节数是否包含长度域本身
exceptDataLenth长度域向右开始,除了长度域表示的字节数,剩余其它数据区字节数
port端口号
heartbeat心跳周期
2.如何配置

通过在iotGate.conf文件中的protocolType属性后增加相应配置,同一组配置之间逗号分隔,不同配置之间分号分隔!目前这种配置方式确实比较麻烦且容器出错,因此需要仔细一点,等到IOTGateConsole项目开发完成之后,可以通过配置页面完成相应配置,操作将更加容易!——IOTGateConsole项目码云地址为:https://gitee.com/willbeahero/IOTGateConsole
源码中的iotGate.conf文件中,自带了两中规约的匹配规则:

  • “1,0,-1,1,2,1,1,9811” 用于解析规约类型为1,长度域(2byte)偏移量为1,且长度域表示的值为自身字节数加上数据区字节数之和,分配端口为9811
  • “2,1,-1,0,4,0,0,9812” 用于解析规约类型2,长度域(4byte)偏移量为0,分配端口为9812
——控制台配置多规约

控制台多规约分为基础应用和高级应用
基础应用:通过配置定长长度域得各项参数,动态配置IOTGate得多规约支持–开源版已支持
高级应用:通过控制台,自定义长度域解析规则,实现非定长(如MQTT长度域)或有特殊含义长度域得处理!最终可以实现几乎所有物联网规约的全量兼容!——高级功能对于绝大部分学习的同学应该都用不到这些的,如果有该需求的厂家请联系作者,目前这部分代码暂时不开源了,请大家谅解!!

  • IOTGateConsole“规约维护”页面用于动态新增或删除规约
    在这里插入图片描述
  • IOTGateConsole“规约维护”页面,用于关闭或启动规约,下拉框可以多选,选中的规约网关会开启相关解析,之前已经开启但本次不再下拉框中选中的规约,网关节点会自动停止未选规约的解析服务
    在这里插入图片描述
为什么要配置多规约?

可能有的小伙伴会问,为什么需要这么麻烦去实现多规约,我本地使用netty或者用java socket的时候,直接将不同规约的报文传给服务端,服务端也可以正常接收啊?为什么IOTGate还需要我配置这么多东西?
有这种疑问的小伙伴,不妨试着让netty或者java socket的客户端(IOTGate中称之为物理设备)多开几个线程,且每个线程循环向服务端同时发送成百上千报文,观察一下,是不是会出现服务端收到的数据要么是几条相同的报文拼接成得一个长报文,要么收到的数据只有发送报文的一部分根本不是全部报文?这就是所谓的粘包/拆包问题。
配置多规约最主要的目的就是解决粘包和拆包问题,解决这些问题之后,才能保证网关发送到master的每一条报文都是完整的报文!

如果上面的你都看完了,那么赶快下载代码运行一下吧,也可以尝试自己创建一种格式的规约,然后通过配置iotGate.conf文件,让IOTGate实现对自己协议的支持!挺有意思的哦O(∩_∩)O

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

於之

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值