跳至内容
深圳市捷比信实业有限公司 · 产品选型与采购咨询联系业务人员
捷比信电阻高精密 · 大功率无感 · 金属膜电阻

使用MQTT作为进程间通信的方法

尽管编辑者在Linux上没有足够的实际开发经验,但他也知道进程之间有几种通信方式:管道,消息队列,共享内存,套接字等。在项目中,MQTT被用作内部通信的方法。过程通讯,感觉很新颖。似乎很少有人使用MQTT作为Internet上的进程间通信方法。让我们与这两个注释一起学习这种方式。 MQTT的一些简介MQTT协议的全名是MessageQueuingTelemetryTransport,它转换为消息队列遥测传输协议。它是物联网的常用应用层协议。它运行在TCP / IP的应用程序层中并且依赖于TCP协议,因此它具有很高的可靠性,并且它是用于基于TCP协议模型发布/订阅主题消息的轻量级协议。 1. MQTT通信模型MQTT协议基于客户端-服务器模型。协议中有三个主要身份:发布者,经纪人和订户。消息发布者可以同时是订阅者。 MQTT消息的发布者和订阅者都是客户端,服务器仅作为中继存在,并将发布者发布的消息转发给所有订阅该主题的订阅者。 MQTT客户端的功能:将消息发布到其他相关客户端。订阅主题以请求接收相关的应用程序消息。退订主题请求以删除接收的应用程序消息。终止与服务器的连接。 MQTT服务器通常称为Broker(消息代理)。它的功能是:接受来自客户端的网络连接请求。接受客户端发布的应用程序消息。处理客户端的订阅和取消订阅请求。将应用程序消息转发给合格的订阅客户端(包括发布者本身)。 2. MQTT消息MQTT发送的消息包含:主题+内容。客户可以订阅任何主题。如果其他客户端发布与订阅的主题匹配的主题,则网关会将它们发送给客户端。 “什么是主题?” MQTT服务器将标签添加到每个连接的客户端(订户)。该标签与服务器中的所有订阅匹配,并且服务器将消息转发给与该标签匹配的每个客户端。这样的标签是主题。 “服务质量:” MQTT提供三种服务质量(Quality of Service,缩写为QoS),供开发人员根据不同情况选择不同的服务级别:QoS0:最多发送一次消息,消息发送后,接收方将不会发送响应,发件人将不会重新发送邮件。 QoS1:消息应至少发送一次(消息必须至少发送一次,或者可以多次发送)。 QoS1的PUBLISH消息的变量头包含消息标识符,需要由PUBACK消息确认。 QoS2:这是最高的服务质量级别,并且消息丢失和重复是不可接受的。只是使用此服务质量级别将产生额外的开销。此级别通常用于付款,因为付款必须仅成功一次,并且您不能多次付款或放弃。 mosquitto的使用1. mosquitto简介mosquitto是一个开源MQTT消息代理(服务器)软件,它提供了轻量级的,可发布/可订阅的消息推送模式,从而更改了设备到设备的短消息通信。它必须很简单,例如广泛使用的低功率传感器,移动设备(例如手机),嵌入式计算机和微控制器。 2. Mosquitto练习从上面的链接下载mosquitto源代码,然后获取:在mosquitto路径下,输入以下命令进行编译:mkdirbuildcdbuildcmake ../ make如果未安装cmake,则需要自己安装。您可以参考上一篇文章:“访问者:Linux下如何编译C程序? 》如果执行cmake ../命令时出现CouldNOTfindOpenSSL问题:您可以输入以下命令来安装OpenSSL(在Ubuntu下):sudoapt-getinstalllibssl-dev执行make和编译后,我们可以看到client和src文件夹在构建目录中,将生成一些可执行文件:我们集中于mosquitto_pub,mosquitto_sub和mosquitto这三个可执行文件。其中,mosquitto是服务器软件,mosquitto_pub是发布者客户端,而mosquitto_sub是订户客户端。让我们在下面简要测试一下:其中,与mosquitto_pub对应的源文件是mosquitto / client / pub_client.c,而与mosquitto_sub对应的源文件是mosquitto / client / sub_client.c。有兴趣的朋友可以自己阅读和学习。这个例子实际上是两个进程之间的通信,provi