TCP(UDP)服务:
一可见asc明文传输:
1 为了让用户迅速的实现传输测试,定义了一种非常简单的协议,使用可见的asc字符传输。
2 回车换行(0x0d、0x0a)作为分割符,设备上传可以是一个回车或一个换行或同时使用回车换行,服务器下发同时使用回车换行。
3 包头采用“$”。
4 数据包中不允许使用以上特殊字符,建议只使用字母和数字及下划线及百分号等可见asc 字符。
5 数据包大小不能超过1024字节,超过的话用户自己做分包处理
6 数据可保存在服务器,服务器自动加时间戳,可查询
7 设备ID长度小于15,目前设备ID编码规则未定义,用户自己处理重复编码的问题,或者和我们沟通解决。
8 tcp连接建议每5分钟发送一个心跳数据包(或15分钟),udp建议30秒,否则很多地方会被路由切断,可以自己测试具体时间。
例如有两台设备862950020676253和860719020024984:
1 设备ID为862950020676253的设备上传一个数据包ABC到服务器
$011000F86295002067625300003ABC
01 是协议版本(版本域:00-99),如果有新的版本,服务端会保留对旧版本的支持
1表示需要服务器应答,0表示不需要服务器应答(类型域:0-9),2表示应答,可带数据,3表示重置消息(一般用于接收端上下文丢失),数据为空
00表示消息ID,用于检测重复数据(ID域:000-999)
F是源设备ID长度,从1到15,即1-9,A-F
862950020676253是源地址
0是目标设备ID长度,0长度指上传到服务器,有长度的话指转发给其它设备
0003是数据长度
ABC是数据
服务器应答:$012000F8629500206762530000
(注:数据中可以是特定的关键字或参数,可以定做服务端,例如请求配置信息或是查询寻等)
2 设备ID为862950020676253的设备往设备ID为860719020024984的设备发送一条数据OPENLED001
$011000F862950020676253F8607190200249840010OPENLED001
01 是协议版本
1表示需要服务器应答,0表示不需要服务器应答
000表示消息ID
F是源设备ID长度,从1到15,即1-9,A-F
862950020676253是源地址
F是目标设备ID长度
860719020024984是目标地址
0010是数据长度,10个字节,如果单片机处理不方便,可直接填0000
OPENLED001是数据
服务器应答:$012000F862950020676253F8607190200249840000
然后服务往目的地址转发数据:$011000F862950020676253F8607190200249840010OPENLED001
测试域名(地址):159.29.142.19
测试端口:20000
注:设备ID不能重复,否则会引起混乱,需要ID测试的请联系qq:867123436
二二进制数据直接传输:
1 目的在于减少传输的数据量,需要一定的通讯知识
2 转义必须
3 校验可选
4 加密可选
5 分包、拆包可选(大数据包传输,例如远程升级)
6 设备及子设备远程升级可选
HTTP服务
一上传格式
1 GET
2 POST
二下行