以下是一个使用 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 库。