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

news2025/7/16 18:19:19

使用网络调试助手发送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.coloradmin.cn/o/395862.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C语言】详解静态变量static

关键字static 在C语言中:static是用来修饰变量和函数的static主要作用为:1. 修饰局部变量-静态局部变量 2. 修饰全局变量-静态全局变量3. 修饰函数-静态函数在讲解静态变量之前,我们应该了解静态变量和其他变量的区别: 修饰局部变量 //代码1 #include &l…

OpenTelemetry 实现方案

OpenTelemetry 有很多种组合和实现方案,我们分别来了解一下 OpenTelemetry 在三种不同技术架构下的使用方式。 1、OpenTelemetry to 开源工具组合 作为经典的对各种遥测数据的处理架构,开源工具可将不同类型的数据存储在不同的平台,比如日志…

倒立摆建模

前言 系统由一辆具有动力的小车和安装在小车上的倒立摆组成,系统是不稳定,我们需要通过控制移动小车使得倒立摆保持平衡。 具体地,考虑二维情形如下图,控制力为水平力FFF,输出为角度θ\thetaθ以及小车的位置xxx。 力…

【WebRTC---序篇】(五)信令逻辑

关于信令的几个问题 信令发送的过程信令发送的时机:用户点connec按钮;选中connect按钮后,按回车键; Windows会分发给消息处理机制,而触发OnDefaultAction中调用Conduction的StartLogin; StartLogin里面会调用pcc_client(信令模块)的Connect; 如果是域名,进行域名解析,之后…

SQL注入——布尔盲注

目录 一,盲注的概念 二,盲注分类 三,注入方法的选择 四,关键函数 五,实例 一,盲注的概念 页面没有报错回显,不知道数据库具体返回值的情况下,对数据库中的内容进行猜解&#x…

【历史上的今天】3 月 8 日:游戏机之父诞辰;搜索技术理论之父出生;MIT 公开演示旋风计算机

整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。 今天是 2023 年 3 月 8 日,在 1857 年的今天,美国纽约制衣和纺织女工举行了首次大型抗议活动。妇女节是纪念妇女权利运动的国际性节日。设立国际妇女节…

【打卡-Coggle竞赛学习2023年3月】对话意图识别

学习链接: https://coggle.club/blog/30days-of-ml-202303 ## Part1 内容介绍 本月竞赛学习将以对话意图识别展开,意图识别是指分析用户的核心需求,错误的识别几乎可以确定找不到能满足用户需求的内容,导致产生非常差的用户体验…

2.6 棋盘覆盖

在一个2*x2‘个方格组成的棋盘中,若怡有一个方格与其他方格不同,则称该方格为特殊方格,且称该棋盘为一特殊棋盘。显然,特殊方格在棋盘上出现的位置有 4种情形因而对任何k0,有4‘种特殊棋盘。图2-4 申的特殊棋益是12时 …

【项目设计】高并发内存池(七)[性能测试和提升]

🎇C学习历程:入门 博客主页:一起去看日落吗持续分享博主的C学习历程博主的能力有限,出现错误希望大家不吝赐教分享给大家一句我很喜欢的话: 也许你现在做的事情,暂时看不到成果,但不要忘记&…

初学JavaScript有困难?看过来,详细安排

你肯定没有尝试归纳,可以把每天学习的内容,用思维导图整理归类,这样看着就清晰多了。把基础入门做成5天的学习计划,其实很简单,你可以参考以下内容 第一天学习目标: 1. 理解变量是存储数据的“容器” 2.…

Linux -- 磁盘存储管理 分区类型(MBR,GPT)

首先呢,大家要清楚,在 Linux 上,分区类型有两种 :一种是MBR, 一种 GPT ~!!!我们所谓的分区、分盘,其实是一回事儿。分区,就是对磁盘划分 逻辑边界, 注意是逻辑…

LAY-EXCEL导出excel并实现单元格合并

通过lay-excel插件实现Excel导出,并实现单元格合并,样式设置等功能。更详细描述,请去lay-excel插件文档查看,地址:http://excel.wj2015.com/_book/docs/%E5%BF%AB%E9%80%9F%E4%B8%8A%E6%89%8B.html一、安装这里使用Vue…

带你感受一次JVM调优实战

本文分成两部分,先了解理论,然后再进行实战。 理论篇 1.1 调优目标 JVM调优的两大目标是: 提高应用程序的性能和吞吐量: 通过优化JVM的垃圾回收机制、调整线程池大小和优化代码,可以提高应用程序的性能和吞吐量。…

见证 2022re:Invent 大会及亚马逊云科技发展有感

文章目录📋前言🎯关于亚马逊云科技 re:Invent 全球大会🧩什么是亚马逊云科技 re:Invent 全球大会🧩回顾往届大会🎯回顾2022亚马逊云科技 re:Invent 全球大会🧩前言🧩宣告大数据迈向 Serverless …

【Linux】进程间通信概念匿名管道

文章目录进程间通信介绍进程间通信的本质进程间通信的目的进程间通信的分类管道匿名管道匿名管道原理pipe函数匿名管道通信的4情况5特点读取堵塞写入堵塞写端关闭读端关闭总结进程间通信介绍 进程间通信简称IPC(Interprocess communication):进程间通信…

【信息安全】快速了解密码的加密加盐处理

前言在开发的时候,有一些敏感信息是不能直接通过明白直接保存到数据库的。最经典的就是密码了。如果直接把密码以明文的形式入库,不仅会泄露用户的隐私,对系统也是极其的不厉,这样做是非常危险的。一、常规的登录认证(…

MySQL实战之事务到底是隔离的还是不隔离的

1.前言 我们在MySQL实战之事务隔离:为什么你改了我还看不见讲过事务隔离级别的时候提到过,如果是可重复读隔离级别,事务T启动的时候会创建一个视图read-view,之后事务T执行期间,即使有其他事务修改了数据,事务T看到的…

MAC(m1)-VMWare Fushion安装Windows11

镜像下载地址:登录 账号:11360XXXXX@qq.com 密码:ZXXXSXX19XX 参考:VMware fusion虚拟机安装Win10系统的详细教程_IT大力水手的博客-CSDN博客_vmware fusion安装 uefi和bios有什么区别?uefi和bios的区别详细分析 _ 电脑系统城 设置密码

分布式事务相关问题

分布式事务刚开始是为解决单服务多数据库资源的场景而诞生的。随着技术的发展,特别是 SOA 分布式应用架构以及微服务时代的到来,服务变成了基本业务单元。因此,又产生了跨服务的分布式事务需求。 基于单个服务单一数据库资源访问的事务&#…

在 Python 中拆分具有多个分隔符的字符串

要使用多个定界符拆分字符串: 使用 re.split() 方法,例如 re.split(r,|-, my_str)。re.split() 方法将拆分所有出现的分隔符之一的字符串。 import re# 👇️ 用 2 个分隔符拆分字符串my_str fql,jiyik-dot,commy_list re.split(r,|-, my_…