MQTT客户端QT的配置

来源:互联网 发布:h3c网络管理软件 编辑:程序博客网 时间:2024/06/06 11:43

编译环境是win10+QT5.6.1

具体步骤如下:

1、源码下载:https://github.com/emqtt/qmqtt/tree/master。

2、解压安装包。

3、在工程目录里面有一个src文件夹,用Qt打开  %解压路径%\qmqtt-master\qmqtt-master\src.pro文件,点击右键构建此工程目(编译源码)。

注:如果qt版本低于5.3,则会出现编译错误(源码下载页面有说明)

       这里献上我下载的qt的安装包

       https://pan.baidu.com/share/link?uk=3641294860&shareid=3607009364&adapt=pc&fr=ftw

4、在解压路径根目录生成lib、include文件夹。

5、将C盘根目录生成的include文件夹放入   %解压路径%\qmqtt-master\qmqtt-master\src\mqtt 里面,再将其复制到项目工程目录下;将lib文件夹也拷贝至项目工程目录下;将lib文件夹里的DLL动态库文件拷贝至项目工程生成的deBug文件夹。

注:我的include,lib文件时放在项目工作空间QTSpace下面。这样就可以用下面的方式访问

../lib/qmqtt.dll

6、在PRO文件里添加静态库文件:在pro文件中加入两行

LIBS+="../lib/qmqtt.dll"LIBS+="../lib/qmqttd.dll"


7、在PRO文件里添加QT+= network。

8、在工程文件里添加

代码编写

#include "qmqtt.h"#include<qnetWork.h>QMQTT::Client *client = new QMQTT::Client(QHostAddress::LocalHost, 1883);client->setClientId("clientId");client->setUsername("admin");client->setPassword("password");client->connectToHost()



至此我就编译成功了。


下面简单了解一下使用方法,出自小白之手,如有错误,望指正。

void setHost(const QHostAddress& host);设置服务器ip,如果本地调试则为localhostvoid setPort(const quint16 port);设置端口,默认1883。void setClientId(const QString& clientId);设置客户端唯一标识,如果 ClientID 在多次 TCP连接中保持一致,客户端和服务器端会保留会话信息(Session)void setUsername(const QString& username);设置用户名void setPassword(const QString& password);设置密码,用于连接服务器void setKeepAlive(const int keepAlive);设置心跳,客户端在Connect的时候设置 Keep Alive 时长。如果服务端在 1.5 * KeepAlive 时间内没有收到客户端的报文,它必须断开客户端的网络连接void setCleanSession(const bool cleansess);是否清空sessionvoid setAutoReconnect(const bool value);设置是否自动重连void setAutoReconnectInterval(const int autoReconnectInterval);void setWillTopic(const QString& willTopic);设置遗嘱,跟消息差不多void setWillQos(const quint8 willQos);void setWillRetain(const bool willRetain);void setWillMessage(const QString& willMessage);void connectToHost();void disconnectFromHost();quint16 subscribe(const QString& topic, const quint8 qos);订阅消息void unsubscribe(const QString& topic);quint16 publish(const Message& message);发布消息



信号

void connected();连接void disconnected();未连接void error(const QMQTT::ClientError error);错误void subscribed(const QString& topic, const quint8 qos);已订阅void unsubscribed(const QString& topic);没订阅成功void published(const quint16 msgid, const quint8 qos);已发布void pingresp();void received(const QMQTT::Message& message);已接收