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是表示连接已接受

在这里插入图片描述

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

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_46251230/article/details/129394306
今日推荐