当前位置: 首页 > news >正文

MQTT协议-使用CONNECT报文连接阿里云

使用网络调试助手发送CONNECT报文连接阿里云

参考:https://blog.csdn.net/daniaoxp/article/details/103039296

在前面文章介绍了如何组装CONNECT报文,以及如何计算剩余长度

CONNECT报文:https://blog.csdn.net/weixin_46251230/article/details/129392102

计算剩余长度:https://blog.csdn.net/weixin_46251230/article/details/129394172

本次实验通过网络调试助手发送CONNECT报文连接阿里云平台

1、创建阿里云设备,获取MQTT连接参数

创建阿里云设备:https://blog.csdn.net/weixin_46251230/article/details/128993864

在这里插入图片描述

2、转换MQTT连接参数

将clientId、username、passwd都转为十六进制,可以借助网络调试助手进行转换

协议选择UDP,选择自己主机的地址,端口8888,在远程主机那里也选择自己的主机地址,选择ASCII模式,在该模式下粘贴参数,首先粘贴clientId,多余的空格要去掉

在这里插入图片描述

然后点击HEX,则输入框内的ASCII码会自动转为十六进制,将这些十六进制复制到文本文档

在这里插入图片描述

点击右下角的复位计数,然后点击发送,可以看到发送了80个字符

在这里插入图片描述

将80转为十六进制0x50,放到文本文档的十六进制数据前面,要符合UTF-8编码,所以还要在前面加上00

在这里插入图片描述

同理,将username和passwd都转为十六进制格式

在这里插入图片描述

3、组装CONNETC报文

有效载荷就是将clientId、username、passwd的十六进制数据都组合在一起

在这里插入图片描述

固定报头+可变报头,剩余长度可先用??代替,空着

在这里插入图片描述

按固定报头+可变报头+有效负载的顺序组合数据

在这里插入图片描述

4、计算剩余长度

将??后面的字符全都复制到网络调试助手里,复位计数后,点击发送,可看到一共发送了180个字节

在这里插入图片描述

根据计算剩余长度的步骤可知,180大于128,又小于16383,所以使用两个字节来表示

在这里插入图片描述

根据公式180=128*a+b,计算可得a = 1,b = 52,a在高8位,b在低8位,低位在前,高位在后,所以书写顺序是b a

b = 0011 0100 = 1011 0100 (最高位指示后面还有字节表示剩余长度,所以要主动置为1)

b = B4

a = 0000 0001 = 01

将B4 01粘贴到组合数据中

在这里插入图片描述

5、连接阿里云平台

阿里云服务器地址(华东2) : *.iot-as-mqtt.cn-shanghai.aliyuncs.com

*用自己设备的ProductKey进行替换

如:i6deo513xT1.iot-as-mqtt.cn-shanghai.aliyuncs.com

端口号为1883

在这里插入图片描述

将网络调试助手改为TCP Client,远程主机地址填入i6deo513xT1.iot-as-mqtt.cn-shanghai.aliyuncs.com,端口号1883,点击HEX,将上面组合好的CONNECT报文复制粘贴到输入框,点击连接,再点击发送

在这里插入图片描述

接收时记得设置为HEX接收,如果阿里云返回的信息中,最后一个字节为00,则说明连接成功,如果不是00,则连接失败,下标是最后一个字节的可能取值,只有0x00是表示连接已接受

在这里插入图片描述

此时可以看到阿里云平台的设备已经显示在线

在这里插入图片描述

http://www.lryc.cn/news/33812.html

相关文章:

  • 每日学术速递3.8
  • 测牛学堂:软件测试之接口测试理论基础总结
  • 基于土壤数据与机器学习算法的农作物推荐算法代码实现
  • python中html必备基础知识
  • 【专项训练】前言:刻意练习,不断的过遍数才是王道
  • 【Leetcode】反转链表 合并链表 相交链表 链表的回文结构
  • M1、M2芯片Mac安装虚拟机
  • 算法刷题-只出现一次的数字、输出每天是应该学习还是休息还是锻炼、将有序数组转换为二叉搜索树
  • 详解专利对学生、老师和企业员工、创业者、积分落户、地方补助的好处
  • Python图像处理:频域滤波降噪和图像增强
  • 智能手机高端“酣战”,转机在何方?
  • K8s pod 动态弹性扩缩容 HPA
  • C++中的类简要介绍
  • 项目管理工具DHTMLX Gantt灯箱元素配置教程:只读模式
  • 从LiveData迁移到Kotlin的 Flow,才发现是真的香!
  • 【BOOST C++】组件编程(2)-- 组件的设计原理
  • 基于单细胞多组学数据无监督构建基因调控网络
  • 蓝桥杯-最优清零方案(2022省赛)
  • Mac免费软件下载网站推荐(最全免费,替代MacWk)
  • GPU是什么
  • 20230305学习计划
  • SocketCan 应用编程
  • 从零学习python - 04函数方法与返回值
  • MySQL实战之事务到底是隔离的还是不隔离的
  • Elasticsearch:理解 Master,Elections,Quorum 及 脑裂
  • 【致敬女神】HTMLReport应用之Unittest+Python+Selenium+HTMLReport项目自动化测试实战
  • JAVA的16 个实用代码优化小技巧
  • 并发编程的三大挑战之原子性及其解决方案
  • QML动画(其他的动画)
  • Spark 配置项