主题:我使用的是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、自签名证书如何创建以及使用参考上一篇文章(亲测有效)