littlebot
Published on 2025-04-10 / 1 Visits
0

【源码】基于C语言的MQTT客户端库

项目简介

本项目是基于C语言实现的MQTT客户端库,支持MQTT v3.1.1协议。MQTT作为轻量级的发布 - 订阅消息传输协议,在物联网和网络通信领域,尤其是高延迟、低带宽环境中应用广泛。该库借助平台抽象层(PAL),能轻松在不同平台(如嵌入式系统和PC)移植和使用。它不仅线程安全,还支持单线程系统,适合嵌入式设备和微控制器。

项目的主要特性和功能

  1. MQTT协议支持:支持MQTT v3.1.1协议,具备连接、发布、订阅、断开连接等基本功能。
  2. 平台抽象层(PAL):通过PAL处理底层网络操作,方便库移植到不同操作系统和硬件平台。
  3. 轻量级:仅含两个核心源文件,代码量少于2000行,适用于资源受限的嵌入式系统。
  4. 线程安全:支持多线程环境,也能在单线程系统正常运行。
  5. 跨平台:支持多种操作系统和硬件平台,易于移植。
  6. 丰富的示例和文档:提供多个示例程序和详细的API文档,助开发者快速上手。

安装使用步骤

编译源码

本项目仅包含两个核心源文件:mqtt.cmqtt_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]] 其中addressport是可选的,用于指定MQTT代理的地址和端口。若未指定,默认使用Mosquitto MQTT测试服务器。

文档

预构建的文档可在这里找到。API文档包含开发者所需的所有信息,PAL文档则提供了如何将MQTT - C移植到新平台的详细说明。

许可证

本项目采用MIT许可证,详情请参阅LICENSE文件。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】