尽管编辑者在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