Qt MQTT客户端--QMQTT

文章目录

      • 前言
      • 效果图
      • QMQTT 客户端源码的编译
      • QMQTT库的使用

前言

本次使用MQTT库为QMQTT,Qt环境为5.6.2+Mingw;
QMQTT源码地址:https://github.com/emqtt/qmqtt;
其他语言MQTT客户端库的地址:https://github.com/mqtt/mqtt.github.io/wiki/libraries
关于MQTT Broker的搭建和使用可以参照本人MQTT相关专题的博客

效果图

  • 无SSL效果图
    Qt MQTT客户端--QMQTT_第1张图片

  • 有SSL效果图
    这里写图片描述

QMQTT 客户端源码的编译

  • 下载QMQTT源码并解压

这里写图片描述

  • 使用QTCreater打开qmqtt-master/qmqtt.pro并在工程文件添加CONFIG += NO_UNIT_TESTS

Qt MQTT客户端--QMQTT_第2张图片

  • 点击运行完成源码的编译,在构建路径可以看到构建的结果。
    Qt MQTT客户端--QMQTT_第3张图片

QMQTT库的使用

  • 新建QT工程并在工程路径下添加QMQTT库和头文件

    • lib文件夹:将之前构建路径下的lib文件夹拷贝到当前工程路径;
    • mqtt文件夹:将qmqtt-master/src/mqtt文件夹拷贝到当前工程路径;

    Qt MQTT客户端--QMQTT_第4张图片

  • 在工程pro文件添加QMQTT库路径和头文件路径

Qt MQTT客户端--QMQTT_第5张图片

  • 代码编写(使用变量区分是否支持SSL)
#ifdef MQTT_SSL
    QSslSocket ssl_socket;
    ssl_socket.setPrivateKey("C:/MqttSSL/AliMqtt/client.key");
    ssl_socket.setLocalCertificate("C:/MqttSSL/AliMqtt/client.crt");
    QSslConfiguration ssl_config;
    ssl_config.setCaCertificates(QSslCertificate::fromPath("C:/MqttSSL/AliMqtt/ca.crt"));
    ssl_config.setPrivateKey(ssl_socket.privateKey());
    ssl_config.setLocalCertificate(ssl_socket.localCertificate());

    QMQTT::Client *client = new QMQTT::Client("m1.smartbow.cn", 1883,ssl_config);
#endif

#ifndef MQTT_SSL
    QMQTT::Client *client = new QMQTT::Client(QHostAddress("192.168.1.36"), 65530);
#endif
    client->connectToHost();

    QTimer t;
    QObject::connect(&t,QTimer::timeout,[&](){
        qDebug() << "send msg:" << "hello" << " is connect:" << client->isConnectedToHost();
        QMQTT::Message msg(110,"topic", "hello");
        qDebug() << "client_id:" << client->publish(msg);
    });
    t.start(2000);
  • 将动态库文件拷贝到构建路径中,运行完成编译;

Qt+Mingw+QMQTT下载:http://download.csdn.net/download/sxpsxp12/10255754

从Qt5.10开始,官方开始支持MQTT,类名为QtMqtt,5.10之前的版本,可以到地址https://github.com/qt/qtmqtt下下载源码自己编译。


欢迎各位大佬右侧点赞、关注、打赏,我们再会。。。


你可能感兴趣的:(MQTT,Qt开发,QMQTT,QT+Mingw,SSL方式发布信息)