【C++】开源:paho-mqtt-cpp库配置与使用

😏★,° :.☆( ̄▽ ̄)/$:.°★ 😏

这篇文章主要介绍paho-mqtt-cpp库配置与使用。
无专精则不能成,无涉猎则不能通。------梁启超

欢迎来到我的博客,一起学习,共同进步。

喜欢的朋友可以关注一下,下次更新不迷路🥞

文章目录

    • [:smirk:1. 项目介绍](#:smirk:1. 项目介绍)
    • [:blush:2. 环境配置](#:blush:2. 环境配置)
    • [:satisfied:3. 使用说明](#:satisfied:3. 使用说明)

😏1. 项目介绍

项目Github地址:https://github.com/eclipse/paho.mqtt.cpp

paho.mqtt.cpp是一个用于C++的MQTT客户端库,由Eclipse Paho项目提供支持。它提供了MQTT协议的实现,允许开发者在其C++应用程序中轻松地集成MQTT通信功能。

主要特点和用途:

1.跨平台支持:

paho.mqtt.cpp库是跨平台的,支持多种操作系统(如Windows、Linux、macOS等)和编译器(如GCC、Visual Studio等),使得开发者能够在不同的环境中使用相同的API进行MQTT通信。
2.异步和同步API:

该库提供了异步和同步的API接口,允许开发者根据需求选择适合的通信模式。异步API适合需要非阻塞IO的场景,而同步API则更适合简单的同步调用。
3.多种传输协议支持:

支持多种MQTT传输协议,包括TCP、WebSocket等,以满足不同网络环境和需求。
4.消息发布和订阅:

开发者可以使用该库轻松实现MQTT协议中的发布(publish)和订阅(subscribe)功能,通过简单的接口调用即可完成消息的发送和接收。
5.可扩展性和定制性:

paho.mqtt.cpp库设计上支持高度的可扩展性和定制性,允许开发者根据项目需求进行扩展和定制,例如定义消息处理方式、设置连接选项等。

😊2. 环境配置

ubuntu源码安装paho.mqtt.cpp:

bash 复制代码
# 依赖paho.mqtt.c
git clone https://github.com/eclipse/paho.mqtt.c.git
mkdir build && cd build
cmake .. -DPAHO_WITH_SSL=ON
make
sudo make install
sudo ldconfig
# 安装paho.mqtt.cpp
git clone https://github.com/eclipse/paho.mqtt.cpp
mkdir build && cd build
cmake ..
make
sudo make install
sudo ldconfig

程序g++编译:

bash 复制代码
g++ -o main main.cpp -lpaho-mqttpp3 -lpaho-mqtt3cs

😆3. 使用说明

mqtt发布和订阅示例:

cpp 复制代码
#include <iostream>
#include <mqtt/async_client.h>

const std::string SERVER_ADDRESS("tcp://localhost:1883");
const std::string CLIENT_ID("paho_cpp_async");
const std::string TOPIC("test/topic");

int main(int argc, char* argv[]) {
    mqtt::async_client client(SERVER_ADDRESS, CLIENT_ID);

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

    try {
        client.connect(connOpts)->wait();

        client.subscribe(TOPIC, 1)->wait();

        mqtt::message_ptr msg = mqtt::make_message(TOPIC, "Hello from paho mqtt cpp!");
        client.publish(msg)->wait();

        client.disconnect()->wait();
    }
    catch (const mqtt::exception& exc) {
        std::cerr << "Error: " << exc.what() << std::endl;
        return 1;
    }

    return 0;
}

以上。

相关推荐
sleven fung7 小时前
MinerU与BabelDOC与KTransformers与OpenAI API库
开发语言·python·ai·langchain
萤萤七悬7 小时前
【Python笔记】AI帮实现CLI工具-使用argparse.ArgumentParser接收命令参数
开发语言·笔记·python
iCxhust7 小时前
C# 命令行指令 查看二进制文件
开发语言·单片机·嵌入式硬件·c#·proteus·微机原理·8088单板机
csdn_aspnet7 小时前
Java 霍尔分区算法(Hoare‘s Partition Algorithm)
java·开发语言·算法
王老师青少年编程7 小时前
信奥赛C++提高组csp-s之搜索进阶(搜索剪枝核心思想 )
c++·dfs·csp·信奥赛·搜索剪枝·搜索优化
一拳一个呆瓜7 小时前
【STL】使用 C++ 标准库标头
c++·stl
诸葛务农8 小时前
道路行驶条件下电动汽车永磁电机的有效使用寿命及永磁体的失效和回收再利用(下)
java·开发语言·算法
冬奇Lab8 小时前
每日一个开源项目(第120篇):SkillLens - 微软出品,照亮 AI Agent 技能生命周期的“显微镜”
人工智能·开源·资讯
oort1238 小时前
VLStream:全开源决策式AI视频平台,赋能企业构建自主可控、降本增效的智能视觉应用介绍
大数据·开发语言·人工智能·开源·音视频·数据库架构
王老师青少年编程8 小时前
信奥赛C++提高组csp-s之搜索进阶(搜索剪枝案例实践2)
c++·信奥赛·csp-s·提高组·搜索剪枝·生日蛋糕·最优性剪枝