项目简介
本项目是基于C语言实现的MQTT客户端库,支持MQTT v3.1.1协议。MQTT作为轻量级的发布 - 订阅消息传输协议,在物联网和网络通信领域,尤其是高延迟、低带宽环境中应用广泛。该库借助平台抽象层(PAL),能轻松在不同平台(如嵌入式系统和PC)移植和使用。它不仅线程安全,还支持单线程系统,适合嵌入式设备和微控制器。
项目的主要特性和功能
- MQTT协议支持:支持MQTT v3.1.1协议,具备连接、发布、订阅、断开连接等基本功能。
- 平台抽象层(PAL):通过PAL处理底层网络操作,方便库移植到不同操作系统和硬件平台。
- 轻量级:仅含两个核心源文件,代码量少于2000行,适用于资源受限的嵌入式系统。
- 线程安全:支持多线程环境,也能在单线程系统正常运行。
- 跨平台:支持多种操作系统和硬件平台,易于移植。
- 丰富的示例和文档:提供多个示例程序和详细的API文档,助开发者快速上手。
安装使用步骤
编译源码
本项目仅包含两个核心源文件:mqtt.c
和 mqtt_pal.c
,兼容ANSI C(C89)标准,可用任何C编译器编译。在项目中包含头文件:#include <mqtt.h>
。也可使用CMake或提供的Makefile进行编译。
初始化MQTT客户端
c
struct mqtt_client client; // 实例化客户端
mqtt_init(&client, ...); // 初始化客户端
连接MQTT代理
c
mqtt_connect(&client, ...); // 发送连接请求到代理
订阅主题
c
mqtt_subscribe(&client, "toaster/temperature", 0); // 订阅主题 "toaster/temperature",QoS级别为0
发布消息
c
int temperature = 67;
mqtt_publish(&client, "coffee/temperature", &temperature, sizeof(int), MQTT_PUBLISH_QOS_1); // 发布消息到主题 "coffee/temperature",QoS级别为1
运行示例
可参考examples
文件夹中的示例程序,了解如何使用该库进行发布、订阅、重连等操作。
测试
本项目使用cmocka
单元测试框架进行测试。要运行测试,需先安装cmocka
。使用提供的Makefile编译测试和示例:
bash
$ make all
运行测试:
bash
$ ./bin/tests [address [port]]
其中address
和port
是可选的,用于指定MQTT代理的地址和端口。若未指定,默认使用Mosquitto MQTT测试服务器。
文档
预构建的文档可在这里找到。API文档包含开发者所需的所有信息,PAL文档则提供了如何将MQTT - C移植到新平台的详细说明。
许可证
本项目采用MIT许可证,详情请参阅LICENSE
文件。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】