MQTT协议详解

mqtt协议详解(代码示例)

固定头(一般只有2字节): 命令标志1B + 剩余总长度1-4B(可变头+负载)

可变头: 不同命令, 不同长度
 
  负载内容: 可以没有, 传输过程中均为十六进制编码

两字接的长度是高字节在前低字节在后 比如: 8字节 = 00 08

1. CONNECT – 连接服务端

固定包头 + 可变包头: 
   10 + 剩余总长度1B + 长度2B + 协议名4B + 协议版本1B + 连接标志1B + 保持连接时间2B
    
    10 ?? 00 04 ‘M’‘Q’‘T’‘T’ 04 C2 00 FF
    10 ?? 00 04 4D 51 54 54 04 C2 00 FF 清理会话 Clean Session = 1, 不清理
    10 ?? 00 04 4D 51 54 54 04 C0 00 FF Clean Session = 0
    
  有效负载: 
  客户端ID长度(2B) + 客户端ID + 用户名长度(2B) + 用户名 + 密码长度(2B) + 密码

2. CONNACK – 确认连接请求

20 02 01 00 清理会话 Clean Session = 1, 与命令相对应 
   20 02 00 00 Clean Session = 0

3. PUBLISH – 发布消息

Qos:0, DUP一直为0, RETAIN =0不使用保留报文(服务器压力大)
  
  30 + 剩余总长度1B + 主题长度2B + 主题 (+ 报文标识符2B Qos=0时没有) + 报文内容

30 0E 00 09 ‘k’ ‘f’ ‘b’ ‘_’ ‘t’ ‘o’ ‘p’ ‘i’ ‘c’ + ‘1’ ‘2’ ‘3’
    30 0E 00 09 6B 66 62 5F 74 6F 70 69 63 31 32 33

4. PUBACK –发布确认

40 02 报文标识符2B

5. PUBREC – 发布收到(QoS 2,第一步)

6. PUBREL – 发布释放(QoS 2,第二步)

7. PUBCOMP – 发布完成(QoS 2,第三步)

8. SUBSCRIBE - 订阅主题

82 + 剩余总长度1B + 报文标识符2B + 主题过滤器长度2B + 主题过滤器内容nB + Qos等级1B
   
   (消息编号的订阅与应答是一一对应的, 下同)
  
  82 0E 00 0A 00 09 61 70 70 5F 74 6F 70 69 63 00 等级0
  
  82 0E 00 0A 00 09 61 70 70 5F 74 6F 70 69 63 01 等级1

9. SUBACK – 订阅确认

90 + 剩余总长度1B + 消息编号2B + Qos等级1B
    
   90 03 00 0A 00 等级0
   
   90 03 00 0A 01 等级1

10. UNSUBSCRIBE –取消订阅

A2 + 剩余总长度1B + 消息编号2B + 长度2B + 内容nB
   
   A2 0D 00 0A 00 09 61 70 70 5F 74 6F 70 69 63

11. UNSUBACK – 取消订阅确认

B0 + 剩余总长度1B + 消息编号2B
   
   B0 02 00 0A

12. PINGREQ – 心跳请求

C0 00

13. PINGRESP – 心跳响应

D0 00

14. DISCONNECT –断开连接

E0 00

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值