热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MQTT--Qt5编写MQTT-client客户端

库的下载地址:https:github.comemqttqmqtt好不容易编译成功,于是写下经验。编译环境:桌面环境:Windows10Qt5版本

库的下载地址:https://github.com/emqtt/qmqtt
好不容易编译成功,于是写下经验。


编译环境:

  • 桌面环境:Windows10
  • Qt5版本:这里写图片描述

开始

1、下载库文件:https://github.com/emqtt/qmqtt

2、解压出来

这里写图片描述

3、进入src文件下双击src.pro

这里写图片描述

4、配置文件

这里写图片描述

5、点击build完成

这里写图片描述

6、重点!!!
- 此时,在根目录下就会生成两个文件夹:include和lib
- 根目录的意思是:你在哪里打开的就到那个盘的顶目录里找。
- 比如,我在桌面打开src.pro并且编译的,那么我就得到C ://盘的下面找。以此类推!

这里写图片描述

7、将生成的include文件整个拷贝到刚刚解压出来并且已经编译过的文件目录src/mqtt/中

这里写图片描述

8、新建一个工程

这里写图片描述

9、然后将前面放了include文件的mqtt文件夹整个拷贝到新建的项目工程的文件夹中

这里写图片描述

10、再将src编译出来的在xx根目录的lib文件夹也拷贝到到这个工程下面来
这里写图片描述

11、然后debug编译一下(一定记得先debug编译一下,因为等下好把dll文件放到生成的debug文件中)将lib文件夹中的两个动态链接库:qmqtt.dll, qmqttd.dll拷贝到新建工程的Debug文件夹中。

这里写图片描述

12、 在QtCreator的工程中添加之前从根目录一直加进来的include文件中的qmqttDepends文件,然再添加那个qmqtt.h头文件。最后添加那两个库文件。
这里写图片描述

这里写图片描述

这里写图片描述

至此配置完成,接下来就是编写代码进行测试。

13、编写测试代码

(1)在工程pro文件中添加network。

(2)mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include 
#include "mqtt/qmqtt.h"

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

(3)mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    QHostAddress host(QString("127.0.0.1"));
    quint16 port = 1883;

    QMQTT::Client * client = new QMQTT::Client();
    client->setHost(host);
    client->setPort(port);
    client->connectToHost();
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

编译通过了就算测试通过了


推荐阅读
  • 深入解析轻量级数据库 SQL Server Express LocalDB
    本文详细介绍了 SQL Server Express LocalDB,这是一种轻量级的本地 T-SQL 数据库解决方案,特别适合开发环境使用。文章还探讨了 LocalDB 与其他轻量级数据库的对比,并提供了安装和连接 LocalDB 的步骤。 ... [详细]
  • 本文探讨了在使用Apache Flink向Kafka发送数据过程中遇到的事务频繁失败问题,并提供了详细的解决方案,包括必要的配置调整和最佳实践。 ... [详细]
  • 本文介绍了一种算法,用于在一个给定的二叉树中找到一个节点,该节点的子树包含最大数量的值小于该节点的节点。如果存在多个符合条件的节点,可以选择任意一个。 ... [详细]
  • 本文探讨了在Qt框架下实现TCP多线程服务器端的方法,解决了一个常见的问题:服务器端仅能与最后一个连接的客户端通信。通过继承QThread类并利用socketDescriptor标识符,实现了多个客户端与服务器端的同时通信。 ... [详细]
  • 抽象工厂模式 c++
    抽象工厂模式包含如下角色:AbstractFactory:抽象工厂ConcreteFactory:具体工厂AbstractProduct:抽象产品Product:具体产品https ... [详细]
  • 字符、字符串和文本的处理之Char类型
    .NetFramework中处理字符和字符串的主要有以下这么几个类:(1)、System.Char类一基础字符串处理类(2)、System.String类一处理不可变的字符串(一经 ... [详细]
  • 本文主要解决了在编译CM10.2时出现的关于Samsung Exynos 4 HDMI HAL库中SecHdmiV4L2Utils.cpp文件的编译错误。 ... [详细]
  • [编程题] LeetCode上的Dynamic Programming(动态规划)类型的题目
    继上次把backTracking的题目做了一下之后:backTracking,我把LeetCode的动态规划的题目又做了一下,还有几道比较难的Medium的题和Hard的题没做出来,后面会继续 ... [详细]
  • 本文详细解析了Java中流的概念,特别是OutputStream和InputStream的区别,并通过实际案例介绍了如何实现Java对象的序列化。文章不仅解释了流的基本概念,还探讨了序列化的重要性和具体实现步骤。 ... [详细]
  • 深入解析Nacos服务自动注册机制
    本文将探讨Nacos服务自动注册的具体实现方法,特别是如何通过Spring事件机制完成服务注册。通过对Nacos源码的详细分析,帮助读者理解其背后的原理。 ... [详细]
  • Kubernetes Services详解
    本文深入探讨了Kubernetes中的服务(Services)概念,解释了如何通过Services实现Pods之间的稳定通信,以及如何管理没有选择器的服务。 ... [详细]
  • 本文介绍了在Visual C++环境中通过编程实现鼠标移动及点击的具体方法,包括获取鼠标当前位置、移动鼠标至指定位置并执行点击等操作。 ... [详细]
  • 探讨了生成时间敏感的一次性伪随机密码的方法,旨在通过加入时间因素防止重放攻击。 ... [详细]
  • 本文介绍了一个基本的同步Socket程序,演示了如何实现客户端与服务器之间的简单消息传递。此外,文章还概述了Socket的基本工作流程,并计划在未来探讨同步与异步Socket的区别。 ... [详细]
  • 本文介绍如何通过Java代码调用阿里云短信服务API来实现短信验证码的发送功能,包括必要的依赖添加和关键代码示例。 ... [详细]
author-avatar
潇洒树春不_970
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有