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

 

MQTT的C语言编程:

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

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

目录结构如下:

 

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

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

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写到源码里重新编译后,即可执行成功。

 

以上方式,其实并未安装,只是手工tar开了安装文件,而安装文件已经有编译好的包。但每次要指定头文件及库的位置。

按照如下方式安装,库文件及头文件将会被放到/usr/loca/include&lib目录下。这里gcc默认读取头文件及库文件,以后编译程序时,只需要指定相应的链接库即可,不用再指定头文件及库文件的位置,但是运行时会报缺少库文件,可以定义LD_LIBRARY来避免。

安装:yum install cmake

cmake CMakeLists.txt

make ; make install

posted on 2023-07-22 16:13  胡彼德  阅读(36)  评论(0编辑  收藏  举报