MQTT保持活动字节格式

时间:2018-01-01 13:51:08

标签: byte mqtt

MQTT 3.1.1文档非常明确且有用,但是我无法理解关于连接消息中保持活动字节结构的一节的含义。

文档说明:

  

Keep Alive是以秒为单位测量的时间间隔。表示为16位字,它是客户端完成发送一个控制数据包的点与它开始发送下一个控制数据包的点之间允许经过的最大时间间隔。

并给出一个保持活动负载的示例:

  1. 保持活跃MSB(0)0 0 0 0 0 0 0 0
  2. 保持活跃LSB(10)0 0 0 0 1 0 1 0
  3. 我已将此解释为表示10秒的保持活动间隔,因为间隔以秒为单位并且最有意义。但是我不确定你将如何表示更长的间隔,例如10分钟。

    最后,这些字节

    表示最大保持活动间隔65535秒(~18小时)
    1. 保持活跃MSB(255)1 1 1 1 1 1 1 1
    2. 保持活着LSB(255)1 1 1 1 1 1 1 1
    3. 感谢您的帮助

2 个答案:

答案 0 :(得分:0)

10分钟= 600秒

600二进制 - > 0000 0010 0101 1000

是的65535是可以用16位二进制字段表示的最大数字,但是很少有情况下18小时的保持活动间隔是有意义的。

答案 1 :(得分:0)

2^16=65536 seconds 65536/60 = 1092.27 minutes 1092.27/60 = 18.20 hours

0.20hour*60 = 12minutes y 0.27min*60 = 16.2sec

result: 18 hours,12minutes, 16sec