使用  paho-mqtt-cpp  库编写C++ MQTT 客户端

以下示例代码实现了连接到 MQTT 代理服务器、订阅主题以及接收消息的功能。
 
首先,你需要安装  paho-mqtt-cpp  库,不同的操作系统安装方式有所不同,例如在 Ubuntu 上可以使用  apt-get install libpaho-mqttpp3-dev  命令安装。
 
以下是示例代码:
 

#include <iostream>
#include <string>
#include <memory>
#include <MQTTClient.h>
#include <MQTTClientPersistence.h>

// 消息回调函数
void messageArrived(MessageData* md) {
    MQTT::Message& message = md->message;
    std::string payload(reinterpret_cast<char*>(message.payload), message.payloadlen);
    std::cout << "Received message on topic: " << message.topicName << std::endl;
    std::cout << "Message payload: " << payload << std::endl;
}

int main() {
    try {
        // 创建 MQTT 客户端对象
        std::string clientId = "exampleClient";
        std::string brokerAddress = "tcp://localhost:1883";  // MQTT 代理服务器地址
        std::unique_ptr<MQTT::Client> client = std::make_unique<MQTT::Client>(brokerAddress, clientId);

        // 设置回调函数
        client->setMessageCallback(messageArrived);

        // 创建连接选项
        MQTT::ConnectOptions connOpts;
        connOpts.setCleanSession(true);

        // 连接到 MQTT 代理服务器
        std::cout << "Connecting to MQTT broker..." << std::endl;
        client->connect(connOpts);
        std::cout << "Connected to MQTT broker." << std::endl;

        // 订阅主题
        std::string topic = "test/topic";  // 要订阅的主题
        int qos = 0;  // 服务质量等级
        client->subscribe(topic, qos);
        std::cout << "Subscribed to topic: " << topic << std::endl;

        // 模拟运行一段时间,接收消息
        for (int i = 0; i < 10; ++i) {
            // 等待并处理消息
            client->yield(1000);
        }

        // 取消订阅
        client->unsubscribe(topic);
        std::cout << "Unsubscribed from topic: " << topic << std::endl;

        // 断开连接
        client->disconnect();
        std::cout << "Disconnected from MQTT broker." << std::endl;
    } catch (const MQTT::Exception& e) {
        std::cerr << "MQTT Exception: " << e.what() << std::endl;
    } catch (...) {
        std::cerr << "An unknown exception occurred." << std::endl;
    }

    return 0;
}
 
 
上述代码中:
 
1. 定义了  messageArrived  回调函数,用于处理接收到的 MQTT 消息。
 
2. 在  main  函数中,创建了 MQTT 客户端对象,设置连接选项并连接到 MQTT 代理服务器。
 
3. 订阅了指定的主题,通过  yield  方法等待并处理接收到的消息。
 
4. 最后取消订阅并断开与代理服务器的连接。
 
你可以根据实际需求修改代理服务器地址、客户端 ID、订阅主题等参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C++ 老炮儿的技术栈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值