前两篇也说明了一些应答的相关内容,对于刚接触的开发者来讲恐怕仍是不太容易理解,这里专门列举一个篇幅来说解如何针对终端设备上报的信息进行应答。数据库
严格来说,若是不该答,终端设备会判别为服务平台断开链接,就会重复发送相同的信息直到平台应答。spa
应答有两种:注册应答和通用应答。code
顾名思义,注册应答是指在设备初次链接平台时会发送注册信息,消息id通常为:0x0100
具体参考部标协议截图以下:server
(图一)blog
应答的消息id为:0x8100
具体参考部标协议截图以下:开发
(图二)rem
值得一提是,上图的内容其实不够全面,完整的应答格式应该包含部标协议中的消息头
,消息头必须存在于每一条消息中,无论是终端发给平台仍是平台发给终端,都必须包含消息头。字符串
举例,若是平台收到一条终端发来的注册消息以下:it
7e0100002c01918051355000110000000037303131325345472d39383838470000000000000000000000303531333535300130353133353530167e
class
咱们该怎么来分析这条消息呢,首先,挑出消息标示
,也就是首尾的7e
。0100002c0191805135500011
这一段是消息头,标准的字符串长度是:4(消息ID)+4(消息体属性)+12(终端手机号)+4(消息流水号)=24个字符,12个字节。拆分一下就是这样:0100
`002c019180513550
0011`
剩下的就是终端注册时携带的具体内容,能够参考(图一)去分拆消息。
如何应答这条消息呢?其实也是比较简单的,消息头能够直接复用,也就是把终端发送来的消息头直接截取出来使用,加上图二中的信息而后加上校验码
,首位拼接上7e便可。
应答流水号
:能够直接为0000
结果
:若是设备号存在于平台则应答:00
或者03
若是设备号不存在或者平台不容许不存在于平台数据库的设备链接则映带04或者选择不该答。具体看需求策略。
鉴权码
:当应答结果
为03
时无需填写,01
时填写,设备接收后会保存,下次注册时携带。
综合下来就是这样:7e
`81000003
0191805135500001
001103
b5`7e
须要注意的有两点:
7e
时要对消息进行一次转义,具体就是把消息中全部的7e
替换为7d02
全部的7d
替换为7d01
这个在上篇中已经说的比较详细了。相比上面的注册应答,通用应答更为简单,在理解了注册应答后再开看通用应答无非是应答id要随着终端上报的消息id而改变,应该的结果为:00
其余的没有什么区别。