客户端: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