QT实现一个MQTT 客户端(官方MQTT)(上)

本文参考:https://blog.csdn.net/zhxg576/article/details/129706294

1.安装QT

https://download.qt.io/archive/qt/5.12/5.12.8/ 下载安装windows版qt5.12.8,安装选项参考 http://c.biancheng.net/view/3858.html
注意此处2个mingw均需要勾选,其他插件选装但建议都装上:
在这里插入图片描述

2.编译qtmqtt库

http://github.com/qt/qtmqtt/tree/v5.12.8下载qtmqtt5.12.8,打开qtmqtt.pro,选择工具链 编译
报错头文件找不到:
在这里插入图片描述
在src/mqtt路径下新建QtMqtt文件夹,并将此处的头文件复制到QtMqtt文件夹下:
在这里插入图片描述
重新编译,得到编译完成的库,我们只需要此处选中的4个
在这里插入图片描述

3.新建QT工程并调用qtmqtt库

新建一个QT工程,在工程目录下新建qtmqtt_lib文件夹,并将生成的库文件复制到此处,将上一步使用的QtMqtt头文件文件夹也复制到此处
在这里插入图片描述
在这里插入图片描述
将库文件和头文件添加到工程(添加后发现有问题,所以二者都不要添加到工程中)
在工程右键添加库,选择外部库(libQt5Mqtt与libQt5Mqttd,后者应该是代表debug版本,按图示选择即可):
在这里插入图片描述
还要添加一行头文件搜索路径
添加后的.pro文件如图:
在这里插入图片描述
编译,不再报错

4.简单例程测试

可以写个简单的测试工程供参考:
在这里插入图片描述
在这里插入图片描述

连接之前本地搭建的emqx服务器测试:
在这里插入图片描述

在这里插入图片描述
测试成功,收发都能实现,后续会把代码放到gitee
未完待续。。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MQTT(Message Queue Telemetry Transport)是一种轻量级的消息传输协议,适用于物联网设备与服务器之间的数据传输,具有低带宽、低功耗、高可靠性等特点。Qt是一种跨平台的C++图形界面应用程序开发框架,具有简单易学、代码简洁、易于维护等优点,可以用来实现MQTT客户。下面将介绍如何在Qt实现MQTT客户。 1.安装MQTTQt没有自带MQTT库,需要手动安装第三方库。可以选择paho.mqtt.c或eclipse.mosquitto等开源MQTT库,这里以paho.mqtt.c为例。下载并解压paho.mqtt.c库,将其包含到Qt项目中,同时在.pro文件中添加如下语句: INCLUDEPATH += $$PWD/paho.mqtt.c/include LIBS += -L$$PWD/paho.mqtt.c/build/output -lpaho-mqtt3as-static 2.实现MQTT客户Qt实现MQTT客户,需要用到MQTT库中的头文件和API函数。下面以订阅主题为例,展示如何在Qt实现MQTT客户: #include <stdio.h> #include <stdlib.h> #include <string.h> #include "MQTTClient.h" #define ADDRESS "tcp://localhost:1883" #define CLIENTID "ExampleClientSub" #define TOPIC "sample/topic" #define QOS 1 #define TIMEOUT 10000L volatile MQTTClient_deliveryToken deliveredtoken; void delivered(void *context, MQTTClient_deliveryToken dt) { printf("Message with token value %d delivery confirmed\n", dt); deliveredtoken = dt; } int msgarrvd(void *context, char *topicName, int topicLen, MQTTClient_message *message) { printf("Message arrived\n"); printf(" topic: %s\n", topicName); printf(" message: %.*s\n", message->payloadlen, (char*)message->payload); MQTTClient_freeMessage(&message); MQTTClient_free(topicName); return 1; } void connlost(void *context, char *cause) { printf("\nConnection lost\n"); printf(" cause: %s\n", cause); } int main(int argc, char* argv[]) { MQTTClient client; MQTTClient_connectOptions conn_opts = MQTTClient_connectOptions_initializer; int rc; MQTTClient_create(&client, ADDRESS, CLIENTID, MQTTCLIENT_PERSISTENCE_NONE, NULL); conn_opts.keepAliveInterval = 20; conn_opts.cleansession = 1; MQTTClient_setCallbacks(client, NULL, connlost, msgarrvd, delivered); if ((rc = MQTTClient_connect(client, &conn_opts)) != MQTTCLIENT_SUCCESS) { printf("Failed to connect, return code %d\n", rc); exit(EXIT_FAILURE); } MQTTClient_subscribe(client, TOPIC, QOS); printf("Subscribed to topic %s\n", TOPIC); getchar(); MQTTClient_disconnect(client, 10000); MQTTClient_destroy(&client); return rc; } 3.编译运行MQTT客户 将以上代码保存为main.c文件,运行以下命令编译生成可执行文件: gcc -o main main.c -lpaho-mqtt3as 运行可执行文件即可实现MQTT客户的订阅功能。 以上就是利用Qt实现MQTT客户的步骤。通过第三方MQTT库和Qt的API函数,可以方便地实现MQTT客户的开发,适用于物联网等领域的数据传输和处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值