MQTT学习笔记

胡彼德 / 2023-07-22 / 原文

客户端:mqttx for windows,并提供基于互联网的mqtt服务,不用再搭建

 

MQTT的C语言编程:

下载paho的包,在github上,有基于Linux的release版本,下载后,将其解压到任意目录,比如:/opt/mqtt

目录结构如下:

 安装完毕后,进行配置(如果不配置,动态链接库无法找到)

设置动态链接库的搜索路径

export  LD_LIBRARY_PATH=/opt/mqtt/lib

然后,进入bin目录执行MQTTClient_publish,如果能正常执行不报错就代表成功。这个可执行程序的源码在share/doc/???/sample目录下,可自己查看源码文件,里面设置的MQTT服务器是可用的(2023.7)。

如要自行编译,gcc要给出include文件的位置,及库文件的位置,例,如要重新编译MQTTClient_publish.c文件,用如下命令

gcc  MQTTClient.c  \

-o  MQTTclient \

-I /opt/mqtt/include \    ##指定头文件的所在位置

-L /opt/mqtt/lib    \        ##指定动态库的所在位置

-l -lpaho-mqtt3c       ##指定要链接的动态库

 

测试,以公网broker.emqx.io的MQTT服务做测试,修改源码文件并重新编译后,就可以发送了(注意:topic要写成testtopic/#,即与mqttx的客户端看到的一样)

利用mqttx的客户端查看,正常应该能看到订阅的内容。(如果仅写testtopic是看不到的)。另外一个办法就是抓包,只要都正确就算成功。

测试订阅:

编辑MQTTClient_subscribe.c文件,将服务器也指定为broker.emqx.io,执行,会发现收不到消息,这是因为默认没有订阅。

先用客户端进行订阅,并将客户端ID写到源码里重新编译后,即可执行成功。