一款轻量级的通信协议---MQTT (内含Linux环境搭建)
目录
MQTT
MQTT的关键特点:
应用场景
Linux环境搭建:
1. 安装mosquitto
2. Linux下客户端进行通信
3. PC端和Linux下进行通信
安装MQTT. fx
4. MQTT.fx的使用
1. 点击连接
编辑
2. 连接成功
3. 订阅主题或者给别的主题发送消息
遇到的问题:
总结:
MQTT
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是一种轻量级的发布/订阅(publish-subscribe)网络协议,它为低带宽和高延迟或不可靠的网络设计,非常适合物联网(IoT)设备之间的通信。MQTT协议基于TCP/IP协议栈,但在设计上特别注重低功耗和带宽优化,使其成为资源受限设备的理想选择。
MQTT的关键特点:
-
发布/订阅模型:MQTT使用主题(topic)的概念,允许设备订阅感兴趣的主题,并接收所有针对这些主题发布的消息。发送方(发布者)不需要知道谁是消息的接收者,接收方(订阅者)也不需要知道消息来自哪个发送方。
-
轻量级:MQTT协议的头部非常小,这使得它在网络条件不佳的环境下也能高效运行。此外,MQTT客户端可以最小化内存占用和网络流量。
-
断线重连:MQTT客户端可以在断线后自动尝试重新连接到服务器,确保即使在网络不稳定的情况下也能保持通信。
-
服务质量级别:MQTT提供了三个服务质量(QoS)级别,允许用户根据消息的重要性和网络条件选择合适的传输策略:
- QoS 0:最多一次交付,消息可能丢失。
- QoS 1:至少一次交付,确保消息至少被接收一次,但可能多次。
- QoS 2:恰好一次交付,确保消息只被精确地接收一次。
-
保留消息:MQTT支持保留消息功能,即使在订阅者离线时,服务器也会保存最后一条消息,以便订阅者上线后立即收到。
-
小体积:MQTT协议的设计考虑到了资源受限的设备,其编码简单,减少了设备上的处理负载。
应用场景
1. 物联网(IoT)设备管理
MQTT广泛应用于家庭自动化、工业自动化、农业监控、智慧城市等领域。例如,智能灯泡、温湿度传感器、安防摄像头等设备可以通过MQTT协议与云平台或控制中心进行通信,实现远程监控和控制。
2. 实时数据流处理
MQTT可用于实时数据流的采集和传输,如实时股票市场数据、交通流量监控、健康监测设备的数据传输等,这些场景要求数据的实时性和准确性。
3. 移动应用与云同步
移动应用程序经常使用MQTT与后端服务器进行通信,尤其是在需要实时更新和通知的场景下,如聊天应用、实时位置共享、在线游戏等。
4. 车联网(V2X)通信
在车联网领域,车辆与车辆、车辆与基础设施之间的通信可以通过MQTT实现,用于实时交通状况更新、紧急情况广播、自动驾驶汽车的信息交换等。
Linux环境搭建:
1. 安装mosquitto
这里推荐大家去用apt下载,如果没有网络的话在去源码编译下载,源码编译会遇到许多坑,例如老版本的一些mosquitto源码包可能需要老版本的openssl。
apt install mosquitto
安装客户端
sudo apt install mosquitto-clients
运行 mosquitto
mosquitto -v
此时就是运行成功的状态了。
2. Linux下客户端进行通信
首先我们先订阅一个主题,别人往这个订阅的主题发消息我们就可以收到,现在订阅的是 bbxwg
mosquitto_sub -v -t bbxwg
我们现在往这个被订阅的主题发消息。
mosquitto_pub -t bbxwg-m woshidashuaige
3. PC端和Linux下进行通信
我们日常开发中大部分应该都会涉及到Linux和Windows之间的通信,MQTT也不例外。在PC端中有一个专门为MQTT制作的软件。
安装MQTT. fx
因为最新版本的软件需要Licence,所以这里为大家找到了一些免费的版本,链接如下。
百度网盘:
只有1.7的版本,无需许可证(推荐)
Windows版(64位) https://pan.baidu.com/s/13v0ROf1dOzu2tXqmw3iBMg 提取码:r9f7
Windows版(32位) https://pan.baidu.com/s/1kqbh3_43SYR7of0PZw9SGA 提取码:kf9t
苹果电脑mac os https://pan.baidu.com/s/1nfE6_sSbyq5USNphlpKqwA 提取码:pa6v
转载于:不会嵌入式的摆烂王
4. MQTT.fx的使用
1. 点击连接
2. 连接成功
3. 订阅主题或者给别的主题发送消息
到这里基本上就完成了MQTT基本上的一些通信。当然这只是MQTT比较简单的一种用法,它还可以被当成一种库在我编程中去使用,在次我就不多赘述了。
遇到的问题:
当我apt install下载了软件后,发现软件在运行的时候自动占用1883这个端口,导致我在开启的时候会提示端口已被占用
这时候需要我们去改一下他的一些配置文件。
vi /etc/mosquitto/mosquitto.conf
加上下面 这两个配置,应该是将本身的端口号改一下,网上解释说是配置成无用户密码校验和无TLS连接。
listener 1883
allow_anonymous true
当然在编译中可能也会遇到很多的问题,首先应该是各种插件不存在,这个很好解决,我们可以去百度一下直接下载对应的插件就好,但是有的时候也会遇到openssl版本不对,需要老版本,这就就比较麻烦一些 。下面是我源码编译安装遇到的一些问题,希望可以帮助到大家。
总结:
MQTT这款轻量级的通信协议我认非常适合那些性能低下的设备而准备的,也就是我们嵌入式中的一些硬件,这两者的契合度是非常大的。以上是本人的一些浅显的了解,如有错误还请指正。
相关文章:

一款轻量级的通信协议---MQTT (内含Linux环境搭建)
目录 MQTT MQTT的关键特点: 应用场景 Linux环境搭建: 1. 安装mosquitto 2. Linux下客户端进行通信 3. PC端和Linux下进行通信 安装MQTT. fx 4. MQTT.fx的使用 1. 点击连接 编辑 2. 连接成功 3. 订阅主题或者给别的主题发送消息 遇到的问…...
记netty本地客户端断线无法自动重连 or 远程客户端自动重连本地服务端
记netty客户端断线无法自动完成重连 or 服务端无法让客户端断线重连 引场景案例bootstrap 引 netty既能开发socket服务端,也可开发客户端,实现连接的全双工通信。在客户端断线重启后,可自动重连服务端。 场景 本地代码既有socket客户端也有…...
UNIAPP_在js文件中使用i18n国际化
导入 import { initVueI18n } from dcloudio/uni-i18n import messages from /locale/index const { t } initVueI18n(messages) 使用 t(config.request.i001)....

第三节:如何理解Spring的两个特性IOC和AOP(自学Spring boot 3.x第一天)
大家好,我是网创有方,接下来教大家如何理解Spring的两个特性IOC和AOP。本节有点难,大家多理解。 IOC(控制反转) 定义与核心思想: IOC,全称Inversion of Control,即控制反转。 其核…...

【51单片机】串口通信(发送与接收)
文章目录 前言串口通信简介串口通信的原理串口通信的作用串口编程的一些概念仿真图如何使用串口初始化串口串口模式波特率配置 发送与接收发送接收 示例代码 总结 前言 在嵌入式系统的开发中,串口通信是一种常见且重要的通信方式。它以其简单、稳定的特性在各种应用…...
【AI研发工具包】sklearn教程(Scikit-learn)
目录 1. 引言 2. 安装sklearn 3. 导入sklearn 4. 加载数据集 5. 数据预处理 6. 训练模型 7. 评估模型 8. 保存和加载模型 9. 自定义数据 10. 深入sklearn 11. 注意事项 1. 引言 Scikit-learn(简称sklearn)是Python中一个非常流行的机器学习库…...

数位DP——AcWing 1081. 度的数量
数位DP 定义 数位DP是一种动态规划技巧,特别适用于处理与数字的位操作相关的问题,如数字序列的计数、数字的生成等问题。它通过将问题分解为对每一位数字的独立考虑,从而简化问题复杂度,实现高效求解。 数位DP的核心思想是将原…...

2024下半年必追国漫片单,谁将问鼎巅峰?
随着2024年上半年的落幕,国漫市场再度迎来了百花齐放的盛况。从经典续作到全新IP,从玄幻到科幻,每一部作品都以其独特的魅力吸引着观众的目光。本期为大家盘点下半年值得一看的国漫佳作,大胆预测,谁将成为这场神仙打架…...

信息发布小程序h5 uniapp thinkphp
纯手工uniapp thinkphp 全开源打造 信息发布小程序 一、概述 信息发布小程序是一种基于微信平台的小程序应用,旨在为用户提供便捷的信息发布与展示服务。用户可以通过该小程序快速发布各类信息,如招聘、寻物、公告等,同时也可以浏览和搜索…...

Windows定时任务执行脚本
场景:由于网络波动原因导致云数据库没连接上,从而导致某个流程引擎链接不上数据库从而导致该流程引擎服务挂了,网络恢复后 数据库链接正常,但是该引擎服务还是中止状态。 解决方案:在Windows中新建一个定时任务&#…...

优维“统一开放平台”:开放、开发、集成、客制化
基于丰富完善的产品体系,优维重磅推出了统一开放平台。这款由优维自主设计与研发,集数据开发、能力开放、能力集成、客制化为一体的统一开放平台,具备应用市场、应用开发、连接能力、采控平台、API集市、开发者工具等功能模块,可为…...

ChatGPT新纪元:揭秘GPT-4o的多模态能力
GPT-4o登场 探索ChatGPT的多模态创新 今日凌晨,OpenAI向全球宣布了AI发展的新篇章——GPT-4o,每次OpenAI发布重大更新时,尽管令人兴奋,但也不免使众多初创公司的梦想破灭。 GPT-4o的命名中的“o”象征着“omni”——全能的代表。…...

泰勒斯威夫特2022年纽约大学毕业典礼演讲:NYU‘s 2022 Commencement Speaker Taylor Swift
NYU’s 2022 Commencement Speaker Taylor Swift Link: https://www.youtube.com/watch?vOBG50aoUwlI Singer, songwriter, producer, and director Taylor Swift received a Doctor of Fine Arts, honoris causa, at the Commencement for the Class of 2022 and delivered …...
(四)SvelteKit教程:调用外部 API 获取数据
(四)SvelteKit教程:调用 API 我们先按照如下的方式来构建api服务: step 1:npm i json-serverstep 2:在根目录下新建 db.json 文件,内部写入如下内容:{"users": [{"id": 1,"name…...

数据结构-分析期末选择题考点(排序)
何似清歌倚桃李 一炉沈水醉红灯 契子 ✨ 上一期给大家提供了大概会考的题型给老铁们复习的大致思路 这一期还会是一样,我将整理一下排序的题型以及解题方法给你们 由于时间还很多,我就慢慢总结吧,一天一章的样子,明天总结串、后天…...

Python:探索高效、智能的指纹识别技术(简单易懂)
目录 概括 导入库 函数一 参数: 函数二 函数三 主函数 运行结果 src: model_base 7.bmp 编辑 总结 概括 指纹识别是一种基于人体生物特征的身份验证技术。它通过捕捉和分析手指上的独特纹路和细节特征,实现高准确度的身份识别。…...

『SD』AI绘画,不会写提示词怎么办?
提示词 有没有想过,为什么你用 SD 生成的猫是长这样的。 而其他人可以生成这样的猫。 虽然生成的都是猫,但猫与猫之间还是有差距的。 如果你的提示词只是“cat”,那大概率就会出现本文第一张图的那个效果。而如果你加上一些形容词ÿ…...

搭建大型分布式服务(四十二)SpringBoot 无代码侵入实现多Kafka数据源整合插件发布
系列文章目录 文章目录 系列文章目录前言MultiKafkaStarter [V2.2]一、功能特性二、快速开始(生产端)三、快速开始(消费端)四、其它特性五、变更记录六、参考文章 前言 在分布式服务的架构演进中,消息队列作为核心组件…...
Python 学习路线及技巧
一、学习路线 1. 基础阶段 ● 学习 Python 的语法基础,如变量、数据类型、运算符、控制流等。 ● 掌握常用的 Python 标准库,如 os、sys、re、datetime 等。 ● 通过编写简单的程序来巩固基础,如计算器、字符串处理等。 2. 进阶阶段 ● 深入…...

计算机网络知识整理笔记
目录 1.对网络协议的分层? 2.TCP/IP和UDP之间的区别? 3.建立TCP连接的三次握手? 4.断开TCP连接的四次挥手? 5.TCP协议如何保证可靠性传输? 6.什么是TCP的拥塞控制? 7.什么是HTTP协议? 8…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...
React Native 开发环境搭建(全平台详解)
React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...

多模态大语言模型arxiv论文略读(108)
CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...

USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...
【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论
路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...

力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...
站群服务器的应用场景都有哪些?
站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...