【MQTT协议】使用c++实现mqtt协议(Mosquitto源码编译)

这篇具有很好参考价值的文章主要介绍了【MQTT协议】使用c++实现mqtt协议(Mosquitto源码编译)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

MQTT协议简介

MQTT(Message Queuing Telemetry Transport)是一种轻量级的、基于发布/订阅模式的消息传输协议,其最初由IBM开发,现已成为OASIS标准。MQTT协议常用于物联网领域,特别是在传输低带宽、高延迟、不稳定网络条件下的数据,例如传感器数据和遥测数据等。
MQTT协议的优点:

轻量级:MQTT协议的设计十分轻量级,其开销比较小,传输的数据包大小也比较小,这使得MQTT协议非常适合在低带宽、高延迟的网络环境下使用。

可靠性:MQTT协议支持三种服务质量等级(QoS),包括最多一次传输、至少一次传输、恰好一次传输,可以根据应用场景选择不同的服务质量等级来保证数据的可靠性。

灵活性:MQTT协议支持发布/订阅模式,可以让订阅者只订阅自己感兴趣的主题,这种灵活性使得MQTT协议非常适合在大量分布式设备的场景下使用。

易于实现和集成:MQTT协议的规范十分简单、清晰,易于实现和集成到各种不同的应用和系统中。

安全性:MQTT协议可以通过TLS/SSL协议进行加密传输,保证数据传输的安全性。
总之,MQTT协议是一种非常适合在物联网领域使用的协议,其优点在于轻量级、可靠性强、灵活性高、易于实现和安全性好等方面。

发布/订阅模式简介

发布/订阅(Publish/Subscribe)模式是一种消息传递模式,也叫做观察者模式。在这种模式中,消息发送者(发布者)将消息发送到一个或多个主题(Topic)中,而消息接收者(订阅者)则订阅一个或多个主题,接收这些主题中的消息。发布者和订阅者之间没有直接的联系,而是通过主题中介来进行通信。
发布/订阅模式可以用于解耦消息的发送和接收,使得系统中的不同模块之间可以进行松耦合的通信,从而提高系统的可扩展性和灵活性。例如,一个传感器网络中的传感器可以将采集到的数据发布到一个特定的主题中,而数据处理模块则可以订阅该主题,接收和处理这些数据。

发布/订阅模式适用于以下场景:

分布式系统:当系统中的不同模块分布在不同的节点中时,发布/订阅模式可以方便地实现模块之间的通信,而不需要关注节点间的具体实现方式。

实时数据处理:当需要处理高频率、实时产生的数据时,发布/订阅模式可以使得数据的发送和接收之间的延迟最小化,提高数据处理的效率。

事件驱动系统:当需要将事件和事件处理程序分离开来时,发布/订阅模式可以方便地实现事件的发布和订阅,同时也避免了事件处理程序之间的依赖。
总之,发布/订阅模式是一种非常适合解耦消息发送和接收的通信模式,可以提高系统的可扩展性和灵活性,适用于分布式系统、实时数据处理和事件驱动系统等场景。

MQTT协议与发布/订阅模式的联系

MQTT协议是一种基于发布/订阅(Publish/Subscribe)模式的通信协议。在MQTT中,客户端通过订阅主题(Topic)来接收消息,而通过发布消息到某个主题中来发送消息。
MQTT协议支持多个客户端同时订阅同一个主题,当有消息发布到该主题中时,所有订阅该主题的客户端都会收到该消息。这种发布/订阅的通信方式能够实现消息的异步传递,而且还能够支持消息的过滤和分发,从而可以实现更加灵活和高效的通信方式。
因此,MQTT协议和发布/订阅模式是密切相关的。MQTT协议的实现基于发布/订阅模式,而且MQTT协议也是发布/订阅模式的一种实现方式。MQTT协议的应用场景和发布/订阅模式的应用场景也非常相似,都适用于分布式系统、实时数据处理和事件驱动系统等场景。

基于Mosquitto实现的MQTT服务器

Mosquitto是一种轻量级的MQTT消息代理和服务器,由Eclipse Foundation开发和维护。Mosquitto支持MQTT协议3.1和3.1.1版本,可以在各种平台和系统上运行,包括Linux、Windows、macOS等。Mosquitto提供了基本的MQTT代理功能,如发布/订阅模式的消息传递、QoS消息传递、保持活动状态等,同时还提供了一些高级功能,如SSL/TLS加密、ACL访问控制、WebSockets支持等。
Mosquitto具有以下特点:

轻量级:Mosquitto是一个轻量级的MQTT代理和服务器,不会占用太多资源。

易于安装和配置:Mosquitto的安装和配置非常简单,可以快速部署和使用。

易于使用:Mosquitto提供了易于使用的命令行工具和MQTT库,方便用户进行MQTT通信测试和调试。

可扩展性:Mosquitto支持各种MQTT客户端和代理的集成,具有良好的可扩展性。

安全性:Mosquitto支持SSL/TLS加密和ACL访问控制,可以提高MQTT通信的安全性。
总之,Mosquitto是一个轻量级、易于使用、具有良好可扩展性和安全性的MQTT消息代理和服务器,适用于各种MQTT应用场景,如物联网、实时数据处理和事件驱动系统等。

【MQTT协议】使用c++实现mqtt协议(Mosquitto源码编译)

Mosquitto安装

1.选择指定版本,在官网下载安装包并解压,链接:
[https://codeload.github.com/eclipse/mosquitto/zip/refs/tags/v2[git地址]
2.安装必要依赖库(这里是centos环境)openssl

yum install openssl openssl-devel

3.检测config.mk文件,为编译配置文件,默认自带cjson附加包。
对于具体安装目录:改为

prefix?=/usr/local/mosquitto

同时应事先创建此目录

mkdir /usr/local/mosquitto

此时继续安装cjson:
#从github下载cJSON代码

git clone https://github.com/DaveGamble/cJSON.git
cd cJSON
make
make install

安装后输出:

mkdir -p /usr/local/lib /usr/local/include/cjson
cp -a cJSON.h /usr/local/include/cjson
cp -a libcjson.so libcjson.so.1 libcjson.so.1.7.15 /usr/local/lib
cp -a cJSON_Utils.h /usr/local/include/cjson
cp -a libcjson_utils.so libcjson_utils.so.1 libcjson_utils.so.1.7.15 /usr/local/lib

由于采用了源码编译,需要安装:

  • xsltproc (only if building from git)
  • docbook-xsl (only if building from git)
    命令如下:
 yum  install libxslt
 yum  install  docbook-style-xsl

返回Mosquitto源码文件夹下,输入make命令进行编译:

make
make install

则在/usr/local/mosquitto安装目录下出现了:
bin include lib sbin share文件夹
对应的可执行命令所在目录为/usr/local/mosquitto/sbin/

/usr/local/mosquitto/sbin/mosquitto -h

可用下列命令启动mqtt服务器并指定端口:

mosquitto -p 9999

输出:

1681270517: Warning: Unable to drop privileges to 'mosquitto' because this user does not exist. Trying 'nobody' instead.
1681270517: mosquitto version 2.0.11 starting
1681270517: Using default config.
1681270517: Starting in local only mode. Connections will only be possible from clients running on this machine.
1681270517: Create a configuration file which defines a listener to allow remote access.
1681270517: For more details see https://mosquitto.org/documentation/authentication-methods/
1681270517: Opening ipv4 listen socket on port 9999.
1681270517: Opening ipv6 listen socket on port 9999.
1681270517: Error: Cannot assign requested address
1681270517: mosquitto version 2.0.11 running

再使用Mosquitto客户端编程实现mqtt协议客户端即可。文章来源地址https://www.toymoban.com/news/detail-411457.html

到了这里,关于【MQTT协议】使用c++实现mqtt协议(Mosquitto源码编译)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • mosquitto心跳和网络重连机制(基于MQTT协议)

    在网络通信中,心跳(Heartbeat)指的是一种周期性的消息,用于维持通信连接的活动状态。心跳包的主要作用是检测连接是否处于活动状态,及时发现连接异常并重新恢复连接,维护网络通信的稳定性和可靠性。 MQTT(Message Queuing Telemetry Transport)是一种轻量级、开放式的消息

    2024年02月03日
    浏览(44)
  • MQTT协议版本Mosquitto移植到嵌入式arm平台

    MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智

    2024年02月06日
    浏览(55)
  • esp8266模块--MQTT协议连接服务器实现数据接收和发送+源码

    首先推荐中国移动的代码,我觉得中国移动的代码更为合理:(但是有一些其他的模块在里面) OneNET开发板代码、资料--2020-09-27--标准板、Mini板bug修复 - 开发板专区 - OneNET设备云论坛 (10086.cn) 以及这位b站up做的视频:(wifi模块在p9节) 【挽救小白第一季】STM32+8266+小程序智能

    2024年02月08日
    浏览(63)
  • MQTT:windows环境下配置MQTT服务器(mosquitto)

    目录 1.下载 mosquitto 2.安装 mosquitto  3.配置 mosquitto  4.测试 mosquitto         登录网址:         http://mosquitto.org/files/binary/         这里是window环境,选择win32/,下载mosquitto安装包。          双击安装 - 点击Next - 点击Next - 选择安装路径 - 点击install - 点击Finish。

    2024年02月11日
    浏览(41)
  • Ubuntu MQTT mosquitto

    https://github.com/eclipse/paho.mqtt.c.git https://github.com/eclipse/paho.mqtt.cpp.git Paho MQTT C Client Library: MQTT Client library for C (MQTTClient) GitHub - eclipse/mosquitto: Eclipse Mosquitto - An open source MQTT broker  1. install: https://mosquitto.org/download/ 2. conf: 打开/etc/mosquitto/mosquitto.conf,发现需要将配置文件放置于/

    2024年02月04日
    浏览(44)
  • 物联网通信协议-MQTT及使用python实现

    简述 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的\\\"轻量 级\\\"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作

    2024年02月10日
    浏览(48)
  • Linux搭建MQTT服务器(Mosquitto)

    编译时,若提示fatal error: cjson/cJSON.h: No such file or directory,需要安装cJSON,然后重新安装mosquitto。 若不添加软连接,发布、订阅消息时会提示\\\"error while loading shared libraries: libmosquitto.so.1: cannot open shared object file: No such file or directory\\\"。 打开两个服务器连接,分别执行mosquitto_sub、

    2024年02月09日
    浏览(52)
  • 如何在Docker中配置Mosquitto MQTT代理,以便在容器化环境中运行和管理MQTT通信

    MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,广泛用于物联网和传感器网络中。Mosquitto是一个流行的开源MQTT代理,可以在Docker中进行配置和部署。本文将详细介绍如何在Docker中配置Mosquitto MQTT代理,以便在容器化环境中运行和管理MQTT通信。 在开始之前,

    2024年02月06日
    浏览(49)
  • 阿里云部署开源MQTT平台mosquitto的docker操作

    MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,广泛用于物联网和传感器网络中。Mosquitto是一个流行的开源MQTT代理,可以在Docker中进行配置和部署。本文将详细介绍如何在Docker中配置Mosquitto MQTT代理,以便在容器化环境中运行和管理MQTT通信。 在开始之前,

    2024年02月10日
    浏览(48)
  • 【ESP8266】使用MQTT协议 连接华为云iotDA,实现设备属性上报

    相关资料:https://github.com/CQUPTLei/ESP8266 往期文章:【ESP8266】基础AT指令和常用WIF指令 【MQTT 5.0】协议 ——发布订阅模式、Qos、keepalive、连接认证、消息结构 华为云物联网平台 (IoT 设备接入云服务)提供海量设备的接入和管理能力,将物理设备联接到云,支撑设备数据采集上

    2024年02月09日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包