MQTT协议介绍及linux系统下模拟实现

MQTT协议介绍及linux系统下模拟实现

1.MQTT协议介绍

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议之上,mqtt协议在物联网开发中起着极其重要的位置。
MQTT实现后的框架如下图:
MQTT协议介绍及linux系统下模拟实现
比如,现在发布者(手机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
注意:安装过程可能报如下错误
MQTT协议介绍及linux系统下模拟实现
编译报错找不到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。
MQTT协议介绍及linux系统下模拟实现
第二个终端:执行命令 mosquitto_sub -t topic01 //订阅主题topic01。
MQTT协议介绍及linux系统下模拟实现
第三个终端:执行命令 mosquitto_pub -t topic01 -m “message01” //向topic01这个订阅发布一个消息,内容为"message01"。
MQTT协议介绍及linux系统下模拟实现
注意:执行 mosquitto_sub -t topic01,会出现如下报错
MQTT协议介绍及linux系统下模拟实现
错误表示找不到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=PATH=PATH:/usr/lib/ 将/usr/lib/添加到环境变量
执行sudo ldconfig 为了让动态链接库为系统所共享即可

第三个终端发送消息,会被第二个终端接收到,如下图
MQTT协议介绍及linux系统下模拟实现
以上基于mqtt协议完成了一次模拟数据的通信传输,实际项目中也是基于此实现数据传输,此方式广泛应用与物联网之中。

此博客是我初次接触mqtt协议,在linux系统中模拟是为了更加清楚的了解整个数据传输流程,在此简单做个记录,如果存在错误的地方欢迎指出。
作者:cdb雪地里