1) 开启一个终端用于订阅消息:mosquitto_sub -v -t sensor
2) 开启另一个终端用于发布消息:mosquitto_pub -t senor -m 12
3) 发布消息后,可在订阅端看到已订阅成功的信息:sensor 12
mosquitto_sub解析:是订阅端终端运行的命令,-v是打印详细信息,-t是需要订阅的主题,后面紧跟的参数就是主题,这里主题叫sensor。mosquitto_pub是发布端终端运行的命令,-t是需要发布的主题,后面紧跟的参数就是主题,-m就是开始发布内容,后面紧跟的参数就是需要发布的内容,这里值为12。
具体的MQTT命令实现方法,有兴趣的同学可以自己去查看源码,源码在Mosquitto -1.4.5 / client目录下面,其目录文件如下:
client_shared.c CMakeLists.txt mosquitto_sub sub_client.c
client_shared.h Makefile pub_client.c sub_client.o
client_shared.o mosquitto_pub pub_client.o
命令的主要实现是在client_shared.c、pub_client.c、sub_client.c这三个文件中实现,其中pub_client.c是实现发布功能的,sub_client.c是实现订阅功能的,client_shared.c则是前边两个c文件共同需要的部分。
mosquitto_pub命令参数说明
-d 打印debug信息
-f 将指定文件的内容作为发送消息的内容
-h 指定要连接的域名 默认为localhost
-i 指定要给哪个clientId的用户发送消息
-I 指定给哪个clientId前缀的用户发送消息
-m 消息内容
-n 发送一个空(null)消息
-p 连接端口号
-q 指定QoS的值(0,1,2)
-t 指定topic
-u 指定broker访问用户
-P 指定broker访问密码
-V 指定MQTT协议版本
--will-payload 指定一个消息,该消息当客户端与broker意外断开连接时发出。该参数需要与--will-topic一起使用
--will-qos Will的QoS值。该参数需要与--will-topic一起使用
--will-retain 指定Will消息被当做一个retain消息(即消息被广播后,该消息被保留起来)。该参数需要与--will-topic一起使用
--will-topic 用户发送Will消息的topic
mosquitto_sub命令参数说明
-c 设定‘clean session’为无效状态,这样一直保持订阅状态,即便是已经失去连接,如果再次连接仍旧能够接收的断开期间发送的消息。
-d 打印debug信息
-h 指定要连接的域名 默认为localhost
-i 指定clientId
-I 指定clientId前缀
-k keepalive 每隔一段时间,发PING消息通知broker,仍处于连接状态。 默认为60秒。
-q 指定希望接收到QoS为什么的消息 默认QoS为0
-R 不显示陈旧的消息
-t 订阅topic
-v 打印消息
--will-payload 指定一个消息,该消息当客户端与broker意外断开连接时发出。该参数需要与--will-topic一起使用
--will-qos Will的QoS值。该参数需要与--will-topic一起使用
--will-retain 指定Will消息被当做一个retain消息(即消息被广播后,该消息被保留起来)。该参数需要与--will-topic一起使用
--will-topic 用户发送Will消息的topic