添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

MQTT简介

MQTT (Message Queue Telemetry Transport 消息队列遥测传输)是一种客户端服务端发布订阅消息传输的协议。它具有轻量级、开源、简单以及易于接入的特点。正是因为这些特点,使得其可以应用于各种使用场景,包括远程端对端的交互,物联网等。

MQTT用于收发消息的主要组件有:

  • Publisher(发布者)
  • Broker(代理)
  • Subscriber(订阅者)
  • 三者的关系如下图:

    从图中可以看出,如果把发送消息或接收消息的端成为Client,那么一个Client即可以是发布者(Publisher)也可以是订阅者(Subscriber)。因为一个client可以通过实现publish接口发送消息,也可以用过实现subscribe接口订阅消息。

    代理(Broker)是链接发布者(Publisher)和订阅者(Subscriber)的中心。一个代理可以链接上千个Client。代理的职责是接收所有发布者(Publisher)的消息,判断消息应该发往哪个订阅者(Subscriber)

    和AQMP一样,MQTT也是基于TCP/IP协议进行通信的。如下图:

  • MQTT和AQMP有哪些差异?
  • MQTT和HTTP又有哪些差异?
  • 代理是通过什么方式判断把发布者(Publisher)的消息分发到对应的订阅者(Subscriber)?
  • 可以带着问题,看看专题文章: MQTT Essentials

    在Windows中编译安装MQTT C++客户端

    本章主要介绍在Windwos平台下编译安装MQTT的C++库,只介绍编译安装过程,开发教程有时间再另开文章介绍

    安装工具及依赖

    相关依赖:

  • MQTT C语言库: paho.mqtt.c ,C++库依赖这个库
  • MQTT C++ 语言库: paho.mqtt.cpp
  • C++ json解析库: nlohmann/json ,用于序列化反序列化消息
  • 需要用到的工具有:

  • Cmake:https://cmake.org/, 下载最新版本的CmakeGUI即可;
  • Git:https://gitforwindows.org/,安装最新版,需要clone Github的仓库
  • Visual Studio Code:https://visualstudio.microsoft.com/zh-hans/downloads/,推荐使用2017
  • 文中举例的安装目录:E:\github
  • 下载MQTT C和MQTT C++源码

  • 进入到E:\github目录
  • 克隆MQTT C++源码到:E:\github\paho.mqtt.cpp
  • 进入E:\github\paho.mqtt.cpp,克隆MQTT C源码到:E:\github\paho.mqtt.cpp\paho.mqtt.c
  • 下载步骤如图:
  • 编译安装MQTT C库

    打开Cmake GUI,,设置源码目录:”Where is the source code“;设置编译目录:”Where to build the binaries”。点击“Configure”按钮,

    设置如下图:

    点击Finish后会编译一次,但是这里有一些配置不合适,更改配置如下:

    接着点击Configure,然后点击Generate,如下图:

    点击Open Project开打项目,生成项目,如下图:

    MQTT C库编译完成。

    进入MQTT C源码目录,执行命令 cmake –build build/ –target install,安装MQTT C库,如下图:

    编译安装MQTT C++库

    打开Cmake GUI,,设置源码目录:”Where is the source code“;设置编译目录:”Where to build the binaries”。点击“Configure”按钮,

    设置如下图:

    点击Finish后会编译一次,这里会报错,因为没有配置依赖的C语言库的路径,更改配置如下:

    配置完成后,点击Configure和Generate。然后点击Open Project开打项目,生成项目,如下图:

    MQTT C++库编译完成。

    进入MQTT C++源码目录,执行命令 cmake –build build/ –target install,安装MQTT C++库

    至此,MQTT C语言库和MQTT C++库都完成编译并安装。

  • 拷贝文件E:\github\paho.mqtt.cpp\build\src\Release\paho-mqttpp3.dll 到目录 E:\github\paho.mqtt.cpp\build\src\samples\Release
  • 下载 MQTT BOX ,mqtt收发消息的桌面客户端
  • 使用MQTT BOX链接Server如下图
  • 使用MQTT BOX创建发布者如下图:
  • 把async_subscribe项目设为启动项,如下图:
  • 修改async_subscribe.cpp如下图:
  • 启动项目,并通过mqtt box发送消息,如果能收到消息,则安装成功。收到消息的界面如下图:
  • 安装源码下载:

    项目: MqttClient

    项目是Private的,需要的可以找我。