mosquitto 订阅C++示例

25 阅读1分钟

以下是一个使用 Mosquitto 的 C++ 示例:

#include <iostream>
#include <mosquitto.h>

#define MQTT_HOST "localhost"
#define MQTT_PORT 1883
#define MQTT_TOPIC "test"

void on_message(struct mosquitto *mosq, void *userdata, const struct mosquitto_message *message) {
    if(message->payloadlen){
        printf("收到消息: %s\n", (char *)message->payload);
    }else{
        printf("空消息\n");
    }
}

int main() {
    mosquitto_lib_init();

    struct mosquitto *mosq = mosquitto_new(NULL, true, NULL);
    if (!mosq) {
        std::cerr << "创建Mosquitto对象失败" << std::endl;
        return 1;
    }

    mosquitto_message_callback_set(mosq, on_message);

    if (mosquitto_connect(mosq, MQTT_HOST, MQTT_PORT, 0) != MOSQ_ERR_SUCCESS) {
        std::cerr << "连接到MQTT服务器失败" << std::endl;
        return 1;
    }

    mosquitto_subscribe(mosq, NULL, MQTT_TOPIC, 0);

    int rc = mosquitto_loop_forever(mosq, -1, 1);

    mosquitto_destroy(mosq);
    mosquitto_lib_cleanup();

    return rc;
}

这个示例演示了如何使用 Mosquitto C++ 客户端库订阅一个 MQTT 主题,并在接收到消息时打印出来。你需要将代码中的 MQTT 服务器地址、端口和主题名称替换为实际使用的值,并确保在编译时链接 Mosquitto 库。