winQT5.14.2 msvc2017 实现启用ssl功能mqtt客户端

本文介绍了在Windows环境下,使用Qt5.14.2版本的QMQTT库实现MQTT连接,并配置了SSL/TLS以处理自签名证书的过程,包括添加头文件、链接外部库和设置SSL配置。
摘要由CSDN通过智能技术生成

主题:我使用的是windows下的qt5.14.2版本的,查阅网上资料发现并没有办法直接使用qt自带的mqtt,貌似只有在6.0以后才会有,于是便在网上下载相应的库进行链接,链接的操作千篇一律,如有需要库的同学可以私聊!!!

话不多说直接代码:

1、我在ui界面上面拉取了一个按键作为执行;

2、添加头文件:

#include <QSslConfiguration>
#include <QSslCertificate>
#include <QSslKey>
#include <QSslSocket>
#include <qmqtt.h> // 我自己链接的库文件

3、还是把pro文件内容展示一下吧:

qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

win32:CONFIG(release, debug|release): LIBS += -L$$PWD/lib/ -lQt5Qmqtt
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/lib/ -lQt5Qmqttd
else:unix: LIBS += -L$$PWD/lib/ -lQt5Qmqtt

INCLUDEPATH += $$PWD/include
DEPENDPATH += $$PWD/include
#右键直接链接外部库

TARGET = Mqtt #生成程序名称
QMAKE_CXXFLAGS += /utf-8 #编码格式

4、接下来看一下按键中的执行内容:

 4.1、使用 QSslSocket 处理 SSL/TLS 连接

QString basePath = QCoreApplication::applicationDirPath(); // exe 路径
QSslSocket ssl_socket; // 使用 QSslSocket 处理 SSL/TLS 连接
ssl_socket.setPrivateKey(basePath + "/client.key"); // 加载客户端私钥
ssl_socket.setLocalCertificate(basePath + "/client.pem"); // 加载客户端证书

4.2、使用 QSslConfiguration 用于配置 SSL/TLS

QSslConfiguration ssl_config1; // 使用 QSslConfiguration 用于配置 SSL/TLS
ssl_config1.setProtocol(QSsl::TlsV1_2); // 设置ssl版本 可以设置为all版本
ssl_config1.setCaCertificates(QSslCertificate::fromPath(basePath + "/ca.pem")); // 设置 CA 证书文件路径,用于验证服务器证书的有效性
ssl_config1.setPrivateKey(ssl_socket.privateKey()); // 将 QSslSocket 对象中的私钥设置到 QSslConfiguration 中
ssl_config1.setLocalCertificate(ssl_socket.localCertificate()); // 将 QSslSocket 对象中的客户端证书设置到 QSslConfiguration 中
QMQTT::Client *clientttttt = new QMQTT::Client("mqtt服务器地址", 8883,ssl_config1); // 初始化 ip 端口 ssl配置

4.3、连接服务器

if(clientttttt->isConnectedToHost()) { // 别和指针定义写在一起
    qDebug() << "已连接";
}else {
    qDebug() << "未连接";
    clientttttt->setClientId("hahahahahaha");
    clientttttt->connectToHost();
}

5、自签名证书如何创建以及使用参考上一篇文章(亲测有效)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值