项目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库设计上支持高度的可扩展性和定制性,允许开发者根据项目需求进行扩展和定制,例如定义消息处理方式、设置连接选项等。
ubuntu源码安装paho.mqtt.cpp:
# 依赖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++编译:
g++ -o main main.cpp -lpaho-mqttpp3 -lpaho-mqtt3cs
mqtt发布和订阅示例:
#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;
}