本文将带您简要了解mqtt和mosquitto

尽管编辑者在Linux上没有足够的实际开发经验,但他也知道进程之间有几种通信方式:管道,消息队列,共享内存,套接字等。

在项目中,MQTT被用作内部通信的方法。

过程通讯,感觉很新颖。

似乎很少有人使用MQTT作为Internet上的进程间通信方法。

让我们与这两个注释一起学习这种方式。

MQTT的一些介绍以下介绍来自“ [Wildfire]“ LwIP应用程序开发实用指南”。

MQTT协议的全名是消息队列遥测传输,它转换为消息队列遥测传输。

它是物联网的一种常用应用程序层协议,在TCP上运行。

/ IP中的应用层依赖于TCP协议,因此具有很高的可靠性。

同时,它是一种轻量级协议,可基于TCP协议模型发布/订阅主题消息。

1. MQTT通信模型MQTT协议基于客户端-服务器模型。

协议中有三个主要身份:发布者,经纪人和订户。

消息发布者可以同时是订阅者。

MQTT消息的发布者和订阅者都是客户端,服务器仅作为中继存在,并将发布者发布的消息转发给所有订阅该主题的订阅者。

MQTT客户端功能:将消息发布到其他相关客户端。

订阅主题以请求接收相关的应用程序消息。

退订主题请求以删除接收的应用程序消息。

终止与服务器的连接。

MQTT服务器通常称为Broker(消息代理)。

它的功能是:接受来自客户端的网络连接请求。

接受客户端发布的应用程序消息。

处理客户端的订阅和取消订阅请求。

将应用程序消息转发给合格的订阅客户端(包括发布者本身)。

2. MQTT消息MQTT发送的消息包含:主题+内容。

客户可以订阅任何主题。

如果其他客户端发布与订阅的主题匹配的主题,则网关会将它们发送给客户端。

“什么是主题?” MQTT服务器将标签添加到每个连接的客户端(订户)。

该标记与服务器中的所有订阅匹配,并且服务器将消息转发给与该标记匹配的每个客户端。

这样的标签是主题。

“服务质量:” MQTT提供三种类型的服务质量(服务质量,缩写为QoS),供开发人员根据不同的情况选择不同的服务级别:QoS0:最多发送一次消息,发送消息后,接收方将不发送消息。

回复,发件人将不会重新发送邮件。

QoS1:消息应该至少发送一次(消息至少需要发送一次,或者可以多次发送)。

QoS 1的PUBLISH数据包的可变头包含一个数据包标识符,需要由PUBACK数据包确认。

QoS2:这是最高的服务质量级别,并且消息丢失和重复是不可接受的。

只是使用此服务质量级别将产生额外的开销。

此级别通常用于付款,因为付款必须仅成功一次,并且您不能多次付款或放弃。

mosquitto的使用1. mosquitto简介mosquitto是一个开源MQTT消息代理(服务器)软件,它提供轻量级的,可发布/可预订的消息推送模式,从而更改了设备到设备的短消息通信。

它必须很简单,例如广泛使用的低功率传感器,移动设备(例如手机),嵌入式计算机和微控制器。

蚊帐仓库地址:https://gitee.com/zhengnianli/mosquitto或https://github.com/eclipse/mosquitto 2.蚊帐实践从上面的链接下载mosquitto源代码,并获得:在mosquitto路径下,输入要编译以下命令:Mkdir buildcd buildcmake ../make如果未安装cmake,则需要自己安装。

您可以参考上一篇文章:“访问者:如何在Linux下编译C程序? 》如果执行cmake ../命令时出现无法找到OpenSSL的问题:您可以输入以下命令来安装OpenSSL(在Ubuntu下):sudo apt-get install libssl-dev执行make和编译后,我们可以在构建目录中查看文件。

在client和src文件夹下将生成一些可执行文件:我们专注于三个可执行文件:mosquitto_pub,mosquitto_sub和mosquitto。

其中,mosquitto是服务器软件,mosquitto_pub是发布者客户端,而mosquitto_sub是订户客户端。

让我们在下面简要测试一下:其中,与mosquitto_pub对应的源文件是mosquitto / client / pub

产品知识/行业、品牌资讯