C语言实现mqtt client和Apollo通讯

接Net Core、JS/H5、Lua通过Apollo 实现mqtt通讯
,现在需要增加一个 C 语言实现的客户端。运行环境是 CentOS7,大概步骤如下:

1. 下载 paho.mqtt 源码

主要参考文档

git clone https://github.com/eclipse/paho.mqtt.c.git
cd org.eclipse.paho.mqtt.c.git
2. 安装 OpenSSL

OpenSSL 是编译 mqtt 源码必须的,CentOS 下用 yum 就可以了

yum install openssl
yum install openssl-devel
3. 编译和安装mqtt
make
sudo make install

会有4个 so 文件生成并拷贝到 /usr/local/lib/ 目录下 ,我们通常只需要使用第一个 libmqtt3a.so 库。

  • libmqttv3a.so - asynchronous
  • libmqttv3as.so - asynchronous with SSL
  • libmqttv3c.so - "classic" / synchronous
  • libmqttv3cs.so - "classic" / synchronous with SSL
4. 修改源码

paho.mqtt源码里带了一些Sample,我们只测试订阅功能,用MQTTAsync_subscribe.c 来修改和调试。
我们通过上文可以知道我们通过MQTT Broker产品Apollo来做为消息转发,所以我们需要修改一下地址用户密码等属性即可

#define ADDRESS     "tcp://127.115.14.6:61613"
#define TOPIC       "mytopic1"
...
conn_opts.username = "test";
conn_opts.password = "testpwd";
5. 启动和调试

编译并启动:

gcc ./MQTTAsync_subscribe.c -o main -lpaho-mqtt3a
./main

C语言这一端是订阅主题 "mytopic1", 然后利用工具MQTTBox来模拟发送这个主题的消息,如下图:


C语言实现mqtt client和Apollo通讯_第1张图片
image.png

可以看到MQTTBox发送一个消息后,Linux 端能收到消息。

你可能感兴趣的:(C语言实现mqtt client和Apollo通讯)