标题:Qt/C++编写的mqtt调试助手使用说明
作者:liudianwu
日期:2024-10-14 14:47
内容:
## 一、使用说明
1. 第一步,选择协议前缀,可选mqtt://、mqtts://、ws://、wss://四种,带s结尾的是走ssl通信,ws表示走websocket通信。一般选默认的mqtt://就好。
2. 第二步,填写服务所在主机地址,可以是IP地址也可以是网址,只要真实存在的就行。
3. 第三步,填写通信所用端口号,mqtt默认端口号是1883,以实际真实端口号为准。
4. 第四步,填写资源路径,这个要websocket通信才需要填写。
5. 第五步,选择协议版本,这个要和实际的一致,比如服务器不支持5.0,而这里选择的5.0则会失败。一般服务器都会支持所有协议,因为在通信过程中会告知当前用哪个协议。
6. 第六步,填写客户端唯一编号,这个可选,如果服务器要求一定要填写则填写,不然通信会失败。
7. 第七步,单击启动服务按钮,连接成功后会变成断开服务按钮。
8. 第八步,发布主题,先要在主题文本框中输入主题字符串,再单击发布主题按钮。
9. 第九步,订阅主题,先要在主题文本框中输入主题字符串,再单击订阅主题按钮。
10. 既可以发布主题,也可以订阅主题,还可以取消订阅的主题。
11. 有些场景只需要发布主题,比如下位机采集到的数据,则只需要发布主题带上数据内容即可。
12. 有些场景只需要订阅主题,比如上位机通过订阅主题获取到最新的数据,订阅对应主题后,有新的主题数据发布,就会立即更新通知订阅过的客户端。
13. 发布的主题和订阅的主题,标识可以相同也可以不同,同一个标识的才会触发通知机制,一旦发布主题就会触发通知订阅过该主题的客户端。
14. 切换到高级参数选项卡,有一堆高级参数可以设置,比如用户验证,这样可以防止非法用户访问。一般合法的用户信息需要在mqtt服务的后台设置,相当于权限控制。
```cpp
//实例化mqtt采集类
IotMqttBase *mqttBase = new IotMqttBase(this);
//取出mqtt通信对象
QMqttClient *mqttClient = mqttBase->getMqttClient();
//关联收到数据信号
connect(mqttClient, SIGNAL(messageReceived(QByteArray, QMqttTopicName)), this, SLOT(messageReceived(QByteArray, QMqttTopicName)));
//设置通信参数/主机地址和端口参数必须设置
mqttClient->setHostname("broker.emqx.io");
mqttClient->setPort(1883);
//还有其他一堆参数根据情况按需设置
.....
//连接到服务器
mqttBase->connectToHost();
//从服务器断开
mqttBase->disconnectFromHost();
//发布主题
mqttClient->publish("qt ..