前言
一、MQTT
MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,专为低带宽、高延迟或不可靠的网络环境设计。MQTT C++ 库为开发者提供了实现 MQTT 协议的工具,能够在各种设备和应用程序中高效地传输消息。
主要特点:
- 轻量级:MQTT 协议设计简洁,适合资源受限的设备,如传感器、微控制器等。
- 高效传输:通过发布/订阅模式,允许设备之间高效地通信,减少了网络负担。
- 质量服务(QoS):支持多种消息传递服务质量级别,确保消息的可靠传递。
- 持久会话:可以在客户端和服务器之间保持持久连接,方便断线重连时的数据同步。
用途:
- 物联网(IoT):在智能家居、工业自动化和智能城市中实现设备之间的通信。
移动应用:实时更新用户界面,例如聊天应用或推送通知。 - 数据采集:从分布在不同地点的传感器收集数据,并传输到中心服务器进行分析。
- 远程监控:在各种环境中监控设备状态,如温度、湿度、压力等,确保及时响应。
Eclipse Paho 是 Eclipse 基金会的官方项目,意味着它有一个活跃的开发社区和持续的维护。这确保了库的稳定性、更新和安全性
选择 Eclipse Paho MQTT C++ 库不仅是因为它是官方支持的项目,还因为它具备丰富的功能和广泛的应用场景,适合开发各种基于 MQTT 的应用
接下来就开始安装吧!!
二、MQTT C++ 安装流程
2.1 安装相关依赖
确保已经安装了编译相关的依赖
没有安装gcc make 之类的可以运行下面(可选)
sudo apt-get install build-essential gcc make cmake
sudo apt-get install libssl-dev
可能 libssl-dev 不好安装,要使用“正常网络“”
sudo apt-get install doxygen graphviz
2.2 安装Paho MQTT C++ 库
首先先下载克隆:
# 克隆 Paho MQTT C 库
git clone https://github.com/eclipse/paho.mqtt.cpp
cd paho.mqtt.cpp
切换到推荐分支:
git checkout v1.4.0
初始化:
git submodule init
git submodule update
使用指定命令编译构建:
# 编译构建
cmake -Bbuild -H. -DPAHO_WITH_MQTT_C=ON -DPAHO_BUILD_EXAMPLES=ON
sudo cmake --build build/ --target install
2.3 验证
通过下面的命令查看是否有对应的库:
ls /usr/lib | grep paho
ls /usr/local/lib | grep paho
也可以使用下面的小例子验证, MQTT C++ 库是否能正常工作
#include <iostream>
#include <paho-mqttpp3.hpp>
int main() {
// 创建 MQTT 客户端对象
mqtt::async_client client("tcp://broker.hivemq.com:1883", "client_id");
// 尝试连接到 MQTT 代理
try {
client.connect()->wait();
std::cout << "Connected to MQTT broker!" << std::endl;
} catch (const mqtt::exception& exc) {
std::cerr << "Error: " << exc.what() << std::endl;
return 1;
}
// 断开连接
client.disconnect()->wait();
return 0;
}
然后编译运行:
g++ mqtt_test.cpp -o mqtt_test -lpaho-mqttpp3 -lpaho-mqtt3as
./mqtt_test
如果看到有以下输出则表示成功
Connected to MQTT broker!
总结
因为 Paho MQTT C++库需要依赖 Paho C libraries
通过上面这种安装方法可以自动安装编译 Paho C libraries ,是比较推荐的方法
当然如果想手动修改编译Paho C libraries,也是可以的 ,参考 官方github