Eclipse Paho C++ MQTT客户端库:使用指南与示例

Eclipse Paho C++ MQTT客户端库:使用指南与示例缩略图
本文目录
  1. 1. Eclipse Paho C++介绍与使用文档
  2. 2. 特性
  3. 3. 从源代码构建

Eclipse Paho C++介绍与使用文档

https://www.eclipse.org/paho/clients/cpp/

介绍

Eclipse Paho C++是一个开源的MQTT(Message Queuing Telemetry Transport)C++客户端库,它允许C++应用程序与MQTT代理进行通信。MQTT是一种轻量级、可扩展的发布/订阅通信协议,常用于物联网(IoT)应用、传感器数据传输、远程监控等领域。Paho C++客户端库是Eclipse Paho项目的一部分,旨在提供一个稳定、高性能的MQTT通信解决方案。

特性

Eclipse Paho C++客户端库具有以下特性:

  • MQTT协议支持: 支持MQTT 3.1、MQTT 3.1.1和MQTT 5.0协议版本,使您能够选择最适合您需求的版本。
  • TLS/SSL支持: 支持使用TLS/SSL进行安全通信,确保数据在传输过程中的机密性和完整性。
  • 遗嘱消息(LWT): 提供遗嘱消息功能,允许客户端在意外断开连接时发送预定义的消息。
  • 自动重连: 支持自动重新连接功能,以确保在网络中断后能够重新建立连接。
  • 离线消息缓存: 允许客户端在离线时缓存消息,当重新连接到代理时自动发布这些消息。
  • WebSocket支持: 支持WebSocket协议,允许通过WebSocket连接到MQTT代理。
  • 非阻塞API: 提供非阻塞API,使应用程序能够并发处理多个MQTT操作。
  • 高可用性: 支持高可用性设置,确保可靠的消息传递,即使在代理故障时也能保持通信。

安装与构建

从源代码构建

要使用Eclipse Paho C++客户端库,您可以从源代码构建它。以下是一些常见的步骤:

  1. 获取源代码: 您可以从Paho GitHub仓库中获取源代码。使用git clone命令或下载ZIP文件。
  2. 配置构建: 使用CMake配置构建过程。在命令行中导航到源代码目录,然后运行以下命令:
   cmake .
  1. 构建库: 使用合适的构建工具(通常是Make或Visual Studio)构建库。运行以下命令来构建库文件:
   make
  1. 安装库(可选): 您可以选择安装库到系统中,以便在其他项目中使用。运行以下命令来安装库:
   make install

现在,您已经成功构建了Eclipse Paho C++客户端库,可以将其包含到您的C++应用程序中。

使用步骤

下面是使用Eclipse Paho C++客户端库的基本步骤:

  1. 包含头文件: 在您的C++代码中包含必要的Paho头文件。例如:
   #include <mqtt/client.h>
  1. 创建客户端实例: 创建一个MQTT客户端实例,并配置连接选项。
   mqtt::client cli(ADDRESS, CLIENT_ID);
   mqtt::connect_options connOpts;
   connOpts.set_keep_alive_interval(20);
   connOpts.set_clean_session(true);
  1. 连接到MQTT代理: 使用连接选项连接到MQTT代理。
   cli.connect(connOpts);
  1. 发布消息: 创建MQTT消息并使用客户端实例发布消息。
   auto msg = mqtt::make_message(TOPIC, PAYLOAD);
   msg->set_qos(QOS);
   cli.publish(msg);
  1. 订阅主题(可选): 如果需要订阅消息,可以使用客户端实例进行订阅。
   cli.subscribe(TOPIC, QOS);
  1. 处理消息(可选): 如果订阅了主题,您可以设置消息处理程序来处理接收到的消息。
   cli.set_callback(my_callback);
  1. 断开连接: 在完成通信后,断开与MQTT代理的连接。
   cli.disconnect();

以上步骤简要介绍了如何使用Eclipse Paho C++客户端库与MQTT代理进行通信。根据您的具体需求,您可以进一步扩展和自定义这些步骤,以满足您的应用程序的需求。

示例代码

以下是一个简单的发布示例代码,展示了如何使用Eclipse Paho C++客户端库发布MQTT消息:

int main(int argc, char* argv[])
{
    const std::string TOPIC { "hello" };
    const std::string PAYLOAD { "Hello World!" };
    const int QOS = 1;

    // 创建客户端

    mqtt::client cli(ADDRESS, CLIENT_ID);

    mqtt::connect_options connOpts;
    connOpts.set_keep_alive_interval(20);
    connOpts.set_clean_session(true);

    try {
        // 连接到客户端

        cli.connect(connOpts);

        // 创建并发布消息

        auto msg = mqtt::make_message(TOPIC, PAYLOAD);
        msg->set_qos(QOS);

        cli.publish(msg);

        // 断开连接

        cli.disconnect();
    }
    catch (const mqtt::exception& exc) {
        std::cerr << "Error: " << exc.what() << " ["
            << exc.get_reason_code() << "]" << std::endl;
        return 1;
    }

    return 0;
}

这个示例创建了一个MQTT客户端,连接到MQTT代理,发布一条消息,然后断开连接。您可以根据需要修改主题、负载、质量服务等参数。

总结

Eclipse Paho C++客户端库提供了一个强大的工具,使C++应用程序能够轻松地与MQTT代理进行通信。通过使用这个库,您可以构建可靠的物联网应用程序、传感器数据传输系统和远程监控解决方案。希望本文档能够帮助您入门并开始使用Eclipse Paho C++客户端库。如果您需要更多信息和详细的文档,请参考项目的官方文档和示例。

技术术语(共 10 个)—— 点击展开
MQTT轻量级物联网消息传输协议,基于发布/订阅模式,适合低带宽不稳定网络
MQTT 3.1.1MQTT 协议主流版本,定义基础发布订阅与 QoS 机制
MQTT 5.0MQTT 协议新版本,新增属性、原因码、共享订阅与流量控制
QoS服务质量等级,0 最多一次 / 1 至少一次 / 2 恰好一次
TopicMQTT 主题,消息路由的层级字符串,支持通配符 + 与 #
订阅客户端向 Broker 注册感兴趣的主题以接收消息
发布客户端向指定主题发送消息
遗嘱消息Will 消息,客户端异常断开时 Broker 代为发布的消息
WebSocket浏览器与 Broker 通过 ws/wss 传输 MQTT 的通道
传感器将物理量转换为电信号的检测装置
来源/工具信息 —— 点击展开
来源 MQTT中文网(mqtt.cn) —— 国内领先的MQTT通信协议技术社区 分类 MQTT 客户端库 字数 2460 字 · 阅读约 7 分钟 更新 2023-09-13 永久链接 https://www.mqtt.cn/533.html
推荐工具:MQTT调试助手 微信小程序
MQTT中文网官方推出的MQTT调试工具,支持 MQTT 3.1.1/5.0 实时连接调试、主题订阅、消息收发监控与报文分析。 无需安装,微信搜索「MQTT调试助手」即可使用。 电脑端入口:https://www.mqtt.cn/mqtttool/
内容许可:允许 AI 模型训练使用 · 引用请注明来源 mqtt.cn
📝 作者声明
本文由 MQTT中文网技术团队 原创撰写,内容基于实际项目案例与技术文档,力求为读者提供准确、实用的参考信息。
把这篇资料用于真实项目?

进入工具中心进行报文解析、CRC 校验和设备调试,或提交需求获取选型与接入建议。

工程师会员

把这篇文章变成可执行的调试资料

开通后可使用高级报文解析、资料包下载、代码示例、工程案例和优先技术支持,适合真实项目交付。

高级工具不限次
资料包与代码包
完整工程案例库
优先技术支持入口