MQTT协议介绍及linux系统下模拟实现
MQTT协议介绍及linux系统下模拟实现
1.MQTT协议介绍
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议之上,mqtt协议在物联网开发中起着极其重要的位置。
MQTT实现后的框架如下图:
比如,现在发布者(手机app等)发布一条消息给代理者(阿里云),消息结构我们可以自己定义(可以为一串字符串),于此同时,订阅者(我们的产品)可以与代理者进行数据传输(使用mqtt协议实现),通信需要在代理者上面做订阅与发布的设置。
二.使用linux模拟通信过程
1.搭建模拟环境(操作过程注意每一点下方的注意事项)
a.下载mosquitto软件
下载地址:http://mosquitto.org/files/source/
这里我下载的是最新版本mosquitto-1.4.5.tar.gz #### b.解压文件
将mosquitto-1.6.2.tar.gz放入linux操作系统,解压:tar zxfv mosquitto-1.4.5.tar.gz
b.编译安装
到解压目录,make /sudo make install
注意:安装过程可能报如下错误
编译报错找不到openssl/opensslconf.h (百度发现需要安装libssl-dev)
sudo apt-get update
sudo apt-get install libssl-dev
sudo apt-get install openssl
再次执行make / make install
如果在遇到其他错误,可以直接将错误的地方贴到百度上查找解决方法。
二.测试
完成mosquittor软件后,需要打开三个终端进行测试。
第一个终端:执行命令mosquitto -v //打开mosquitto。
第二个终端:执行命令 mosquitto_sub -t topic01 //订阅主题topic01。
第三个终端:执行命令 mosquitto_pub -t topic01 -m “message01” //向topic01这个订阅发布一个消息,内容为"message01"。
注意:执行 mosquitto_sub -t topic01,会出现如下报错
错误表示找不到libmosquitto.so.1库,所以我们需要做下面操作
sudo ln -s /home/cdb/tool/mosquitto-1.4.5/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1 //链接库
echo $PATH
查看有没有/usr/lib/,如果没有
export PATH:/usr/lib/ 将/usr/lib/添加到环境变量
执行sudo ldconfig 为了让动态链接库为系统所共享即可
第三个终端发送消息,会被第二个终端接收到,如下图
以上基于mqtt协议完成了一次模拟数据的通信传输,实际项目中也是基于此实现数据传输,此方式广泛应用与物联网之中。
此博客是我初次接触mqtt协议,在linux系统中模拟是为了更加清楚的了解整个数据传输流程,在此简单做个记录,如果存在错误的地方欢迎指出。
作者:cdb雪地里