在物联网(IoT)开发中,C语言MQTT库 是实现设备与服务器之间轻量级通信的关键工具。MQTT(Message Queuing Telemetry Transport)是一种基于发布/订阅模式的协议,非常适合资源受限的嵌入式设备。本文将带你从零开始,使用 Paho MQTT C 库编写一个简单的 MQTT 客户端,即使你是编程小白也能轻松上手!

Paho MQTT C 是 Eclipse 基金会维护的一个开源 C 语言 MQTT 客户端库,支持 MQTT 3.1.1 和部分 MQTT 5.0 功能。它轻量、稳定,广泛用于 嵌入式MQTT通信 场景,如 ESP32、树莓派、STM32 等平台。
在开始编码前,请确保你已安装以下工具:
以 Ubuntu 为例,可通过以下命令安装:
sudo apt updatesudo apt install libpaho-mqtt-dev如果你使用的是其他系统(如 Windows 或 macOS),可参考 官方 GitHub 仓库 编译源码。
下面是一个完整的 C 程序,实现连接到 MQTT Broker 并订阅一个主题,同时发布一条消息。
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <MQTTClient.h>#define ADDRESS "tcp://test.mosquitto.org:1883"#define CLIENTID "c_client_example"#define TOPIC "test/topic"#define PAYLOAD "Hello from C MQTT client!"#define QOS 1#define TIMEOUT 10000Lint main(int argc, char* argv[]) { MQTTClient client; MQTTClient_connectOptions conn_opts = MQTTClient_connectOptions_initializer; MQTTClient_message pubmsg = MQTTClient_message_initializer; MQTTClient_deliveryToken token; int rc; // 创建客户端 if ((rc = MQTTClient_create(&client, ADDRESS, CLIENTID, MQTTCLIENT_PERSISTENCE_NONE, NULL)) != MQTTCLIENT_SUCCESS) { printf("Failed to create client, return code %d\n", rc); exit(EXIT_FAILURE); } // 设置连接选项 conn_opts.keepAliveInterval = 20; conn_opts.cleansession = 1; // 连接到 Broker if ((rc = MQTTClient_connect(client, &conn_opts)) != MQTTCLIENT_SUCCESS) { printf("Failed to connect, return code %d\n", rc); exit(EXIT_FAILURE); } printf("Connected to MQTT broker at %s\n", ADDRESS); // 准备要发布的消息 pubmsg.payload = PAYLOAD; pubmsg.payloadlen = strlen(PAYLOAD); pubmsg.qos = QOS; pubmsg.retained = 0; // 发布消息 MQTTClient_publishMessage(client, TOPIC, &pubmsg, &token); printf("Published message to topic '%s'\n", TOPIC); // 等待消息送达 rc = MQTTClient_waitForCompletion(client, token, TIMEOUT); printf("Message with delivery token %d delivered\n", token); // 断开连接并销毁客户端 MQTTClient_disconnect(client, 10000); MQTTClient_destroy(&client); return EXIT_SUCCESS;}将上述代码保存为 mqtt_client.c,然后使用以下命令编译:
gcc -o mqtt_client mqtt_client.c -lpaho-mqtt3c运行程序:
./mqtt_client如果一切正常,你将看到类似以下输出:
Connected to MQTT broker at tcp://test.mosquitto.org:1883Published message to topic 'test/topic'Message with delivery token 1 deliveredMQTTClient_setCallbacks() 注册回调函数,实现订阅功能。通过本教程,你已经掌握了如何使用 C语言MQTT库(Paho MQTT C)构建一个基础的 MQTT 客户端。这是迈向 MQTT客户端开发 的第一步。后续你可以尝试添加订阅、处理断线重连、使用 TLS 加密等高级功能。
无论你是在开发智能家居设备、工业传感器还是远程监控系统,嵌入式MQTT通信 都是你不可或缺的技能。希望这篇 Paho MQTT C教程 能为你打下坚实基础!
祝你编码愉快,万物互联!
本文由主机测评网于2025-12-04发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025122818.html