跳到主要内容

Paho-MQTT C 库使用

Paho C 客户端包含四个变体库,包括共享库和静态库:

  • paho-mqtt3a - 异步访问模式(asynchronous)(MQTTAsync)
  • paho-mqtt3as - 带 SSL 的异步访问模式(asynchronous with SSL)(MQTTAsync)
  • paho-mqtt3c - 同步访问模式("classic" / synchronous)(MQTTClient)
  • paho-mqtt3cs - 带 SSL 的同步访问模式("classic" / synchronous with SSL)(MQTTClient)

安装

以最新的代码为例,首先从 GitHub 下载 paho.mqtt.c 代码

git clone https://github.com/eclipse/paho.mqtt.c.git

使用 cmake 编译,先创建 build 构建目录

cd paho.mqtt.c
mkdir build
cd build

然后构建、编译、安装

cmake ..
make
sudo make install

默认安装在 /usr/local 目录下面。

rudy@pocket-ubuntu:/usr/local/lib$ ls -l libpaho*
lrwxrwxrwx 1 root root 19 99 09:46 libpaho-mqtt3a.so -> libpaho-mqtt3a.so.1
lrwxrwxrwx 1 root root 23 99 09:46 libpaho-mqtt3a.so.1 -> libpaho-mqtt3a.so.1.3.9
-rw-r--r-- 1 root root 252880 99 09:18 libpaho-mqtt3a.so.1.3.9
lrwxrwxrwx 1 root root 19 99 09:46 libpaho-mqtt3c.so -> libpaho-mqtt3c.so.1
lrwxrwxrwx 1 root root 23 99 09:46 libpaho-mqtt3c.so.1 -> libpaho-mqtt3c.so.1.3.9
-rw-r--r-- 1 root root 217840 99 09:18 libpaho-mqtt3c.so.1.3.9

使用

示例代码 MQTTClient_publish.c 实现了一个简单的 MQTT 发布者客户端。

下载代码

https://github.com/getiot/linux-c.git
cd linux-c/network/mqtt/MQTTClient

编译

gcc MQTTClient_publish.c -o MQTTClient_publish -lpaho-mqtt3c -lpaho-mqtt3a

运行

./MQTTClient_publish

如果出现 “error while loading shared libraries: libpaho-mqtt3c.so.1” 错误,请执行下面命令添加动态库的搜索路径。

export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/lib

当然,为了保证看到运行效果,您需要在本地安装并启动 MQTT Broker 服务器,mosquitto 是一个不错的选择。在 Debian/Ubuntu 系统中,可以通过下面命令快速安装。

sudo apt install mosquitto
sudo apt install mosquitto-clients

启动订阅者,订阅 “test” 主题

mosquitto_sub -d -t test

这时候再启动 MQTTClient_publish 程序

$ ./MQTTClient_publish 
Waiting for up to 10 seconds for publication of Hello, GetIoT.tech!
on topic 'test' for client with ClientID: ubuntu
Message with delivery token 1 delivered

API 参考