Qt的qtmqtt库连接onenet出现QMQTT::SocketRemoteHostClosedError解决方法

news2024/11/18 5:57:44

问题描述

在Qt发开过程中使用qtmqtt库来连接onenet的mqtt服务器,在ClientId、Username和Password均填写正确的情况下还是连接不上,查看错误显示QMQTT::SocketRemoteHostClosedError

解决方法

client中的CleanSession标志位必须设置为true

    client = new QMQTT::Client;
    client->setHostName("183.230.40.96");  // 服务器IP
    client->setPort(1883);      // 服务器端口
    client->setClientId("XXX"); // 设备名称
    client->setUsername("XXX"); // 产品ID
    client->setPassword("XXX"); // 鉴权信息,使用Token工具生成
    client->setVersion(QMQTT::MQTTVersion::V3_1_1);  // 设置MQTT协议版本
    client->setKeepAlive(60);                        // 设置保持连接时间
    client->setCleanSession(true);                   // 设置会话标志为true

分析过程

排除环境问题和qtmqtt库问题

  • 在主机中下载MQTTX工具,使用MQTTX连接onenet服务器。-> 连接成功
  • 使用qtmqtt库来连接主机内自己搭建的mosquittoMQTT服务器。-> 连接成功

使用Wireshark工具抓包来分析报文内的信息

  • qtmqtt库连接onenet服务器发送的报文如下图所示:
    qtmqtt连接onenet
  • MQTTX工具连接onenet服务器发送的报文如下图所示:
    在这里插入图片描述
    显而易见qtmqtt库最后发送FIN, ACK意味着断开连接,而MQTTX工具最后一个报文发送ACK表示成功建立连接,紧接着分析MQTT协议中的内容。
  • 以下为qtmqtt库发送报文中MQTT协议中的内容:
    在这里插入图片描述
  • 以下为MQTT工具发送报文中MQTT协议中的内容:
    在这里插入图片描述
    从上图可以发现两者的MQTT协议中只有Clean Session Flag Set这个标志位是不同的,那么原因就找到了,连接onenet的MQTT服务器必须将Clean Session Flag Set标志位设置为1。那么在Qt中增加clinet->setCleanSession(true);就可以解决这个问题,成功连接上onenet的MQTT服务器了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1629891.html

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

相关文章

ssh爆破模拟攻击(最基础)

攻击机(192.168.83.136) 靶机(192.168.83.140) 靶机打开22端口服务 centos7开启ssh 22端口_centos7开放22端口-CSDN博客 看这个师傅的操作 此实验对ssh端口漏洞利用的最基础实验 1、信息收集 发现22端口打开,尝…

k8s RBAC 角色访问控制详解与生产中的实际应用案例

🐇明明跟你说过:个人主页 🏅个人专栏:《Kubernetes航线图:从船长到K8s掌舵者》 🏅 🔖行路有良友,便是天堂🔖 目录 一、前言 1、k8s简介 2、RBAC简介 二、RBAC关键…

Python_AI库 Pandas的数据结构及基本操作

Python_AI库 Pandas的数据结构及基本操作 本文默认读者具备以下技能: 熟悉python基础知识,vscode或其它编辑工具 熟悉表格文件的基本操作 具备自主扩展学习能力 本文篇幅较长,但比较重要,希望读者可以认真看完并实例运行。 Pa…

python在pyqt5+logging+threading模块实时显示日志

pyqt5logging模块,在界面上实时显示日志 简介代码实现logging.Handler重写界面创建与日志实时打印执行main.py 简介 在写小工具时,使用pyqt5生成界面,在代码中使用logging模块来打印信息,现在希望能将logging打印的信息实时展示在…

Android 开发工具使用

c调试 在NDK调试的时候,如果找不到 符号的话,我们可以在调试配置中添加符号地址的全路径一直到根目录:,xxx/armeabi-v7a: You must point the symbol search paths at the obj/local/ directory. This is also not a …

每日OJ题_DFS回溯剪枝⑦_力扣77. 组合

目录 力扣77. 组合 解析代码 力扣77. 组合 77. 组合 难度 中等 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1: 输入:n 4, k 2 输出: [[2,4],[3,4],[2,3],[1,…

路透社:美国SEC将拒绝以太坊ETF

4月25日,据路透社报道,美国SEC在下个月将拒绝以太坊现货ETF申请。根据4位知情人士表示,在最近几周与美国证券交易委员会(SEC)进行了会议之后,美国发行商和其他公司预计SEC将拒绝他们推出与以太坊价格挂钩的…

windows pytorch安装

安装环境 WindowsAnacondaCudacuDNN Linux和Windows操作系统的安装存在差异,步骤会有所不同,本教程主要针对Windows系统进行示例。 Anaconda集成了许多方便的包和工具,使用会更加方便,特别适合科学计算,深度学习的数…

基于MATLAB野外观测站生态气象数据处理分析

朱老师(副教授):来自国内重点高校,长期从事野外观测站生态气象监测与评估研究,发表SCl论文多篇,主持国家与地方科研项目多个,在生态环境数据处理与分析中具有丰富的实践项目经验。 以野外观测站高频时序生态气象数据为例&#xff…

ssm项目后端如何导出war及前端如何导出静态资源

后端如何导出war包 后端工具:IDEA 2020.1.3 运行我们编写工具maven里面的package 运行成功的日志 我们运行完,会生成一个target文件夹,在这个文件夹里面找到war包即可 前端如何导出静态资源 使用工具:WebStorm 2020.1.3 打开左…

c++的学习之路:28、哈希表

摘要 本章主要是说一下哈希的实现 目录 摘要 一、哈希表 1、哈希概念 2、闭散列 1、节点创建 2、插入 3、查找 4、删除 5、测试 3、开散列 1、创建 2、插入 3、查找 4、删除 5、析构函数 二、map 三、set 四、位图与布隆过滤器 五、代码 test.cpp HashT…

[移动端] “viewport“ content=“width=device-width, initial-scale=1.0“ 什么意思

布局视口, 代码如下 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>Document</title><style>body,html {margin: 0;padding: 0;}.box {width: 200px;height: 200px;background-color: pi…

第五十周:文献阅读+IGRA-ISSA-LSTM

目录 摘要 Abstract 文献阅读&#xff1a;基于IGRA-ISSA-LSTM模型的水质预测 现有问题 提出方法 方法论 灰色关联分析&#xff08;GRA) 改进的灰色关联分析&#xff08;IGRA&#xff09; 麻雀搜索算法&#xff08;SSA&#xff09; 改进的麻雀搜索算法&#xff08;ISS…

【Redis】Redis安装、配置、卸载使用可视化工具连接Redis

文章目录 1.前置条件2.安装Redis2.1下载Redis安装包并解压2.2在redis目录下执行make命令2.3修改Redis配置文件2.4启动Redis服务2.5连接redis服务 3.Redis卸载4.使用可视化工具连接Redis 1.前置条件 Linux操作系统需要要是64位.如果不清楚自己Linux上是多少位的,可以使用以下命…

【机器学习原理】决策树从原理到实践

基于树的模型是机器学习中非常重要的一类模型&#xff0c;最基础的就是决策树&#xff0c;本篇主要讲述决策树的原理和几类最常见的决策树算法&#xff0c;这也是更复杂的树模型算法的基础。 参考文章&#xff1a; 1.CSDN-基于熵的两个模型(ID3,C4.5)比较详细&#xff0c;有数字…

JAVA SWING JTABLE表格,点击表头数据可以排序,且第一二行位置固定,不参与排序

对于JAVA SWING 界面开发&#xff0c;使用表格JTABLE开发过程中&#xff0c;一些情况下可能需要在点击表头时对数据进行排序处理。对于简单的排序处理&#xff0c;jtable的setAutoCreateRowSorter方法可满足&#xff0c;但是对于高要求的排序&#xff0c;则满足不了。 比如&am…

【leetcode】数组和相关题目总结

1. 两数之和 直接利用hashmap存储值和对于索引&#xff0c;利用target-nums[i]去哈希表里找对应数值。返回下标。 class Solution { public:vector<int> twoSum(vector<int>& nums, int target) {unordered_map<int, int> mp;vector<int> res;fo…

base64练习

找到password 搜索台搜索password 找到关于password关于base64算法的代码打上断点 点到这个位置在会有一个地址弹出来点击进去 缩小复制 粘贴 运行出数据&#xff0c;成功完成分析

Linux---为什么会有粘滞位?

在前面已经讲过目录的rwx权限&#xff1a; 可读权限(r): 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容. 有可写权限(w):如果目录没有可写权限&#xff0c;则无法在目录中创建文件, 也无法在目录中删除文件.可执行权限(x): 如果目录没有可执行权限, 则无法cd到…

新版运营级限速网盘系统源码 带教程

支持用户使用微信扫码登录&#xff0c;上传文件分享链接可自定义&#xff0c;文件可一键保存到我的网盘&#xff0c;支持微信跟支付宝官方接口&#xff0c;易支付接口不强制可自定义&#xff0c;系统整体的架构安全度升级。学习地址