当前位置: 首页 > news >正文

网站文件夹名称网站开发常见毕业设计题目

网站文件夹名称,网站开发常见毕业设计题目,深圳品牌网站制作,公关服务文章总结#xff08;帮你们节约时间#xff09; MQTT协议是一种轻量级的发布/订阅通信协议。MQTT通信包括连接建立、订阅、发布和断开等过程。MQTT基于TCP/IP#xff0c;其通信过程涉及多种控制包和数据包。ESP32S3可以通过MQTT协议接收消息来控制IO9引脚上的LED。 想象一…文章总结帮你们节约时间 MQTT协议是一种轻量级的发布/订阅通信协议。MQTT通信包括连接建立、订阅、发布和断开等过程。MQTT基于TCP/IP其通信过程涉及多种控制包和数据包。ESP32S3可以通过MQTT协议接收消息来控制IO9引脚上的LED。 想象一下如果互联网是一个繁忙的城市那么MQTT就像是一个高效的快递系统。而传统HTTP通信那就是你不得不亲自上门取包裹的情况MQTTMessage Queuing Telemetry Transport是物联网世界的通信明星它轻巧、灵活特别适合资源受限的设备。这不就像是那种即使在拥挤的小巷里也能灵活穿梭的电动车吗 MQTT是什么 MQTT是一种基于发布/订阅模式的轻量级消息传输协议专为低带宽、高延迟或不稳定网络环境设计。它最初由IBM开发现已成为物联网领域的标准协议之一。 想象MQTT就像是一个神奇的广播站。你不需要直接联系想要交流的对象只需对着广播站MQTT服务器也称为Broker说“我要订阅’天气频道’”。之后任何发布到天气频道的信息你都能收到这种解耦的设计使得设备之间不需要知道彼此的存在大大简化了网络拓扑。 MQTT的核心概念 主题Topic MQTT的主题就像是邮件的地址系统但更加灵活。主题由层级组成用斜杠分隔例如home/livingroom/temperature。 这种层级结构有什么妙处你可以使用通配符订阅多个主题例如订阅home/#就能收到家中所有传感器的数据而不用一个个地订阅。这不比传统的点对点通信方便多了吗 QoS服务质量 MQTT提供三种服务质量级别 QoS 0最多一次“发了就发了管它收没收到”QoS 1至少一次“我会一直发直到收到确认”QoS 2正好一次“我保证消息只送达一次不多不少” 这就像是你发送一封重要邮件QoS决定了你会不会追踪它、催促它、确认它是否送达。 MQTT通信过程详解 连接建立过程 想知道MQTT客户端和服务器之间的第一次握手是怎样的吗请看下面的详细步骤 TCP连接建立MQTT建立在TCP/IP协议之上首先需要完成TCP三次握手 客户端发送SYN包序列号x服务器回复SYN-ACK包序列号y确认号x1客户端发送ACK包确认号y1 CONNECT包发送TCP连接建立后客户端发送CONNECT包包含 客户端ID用户名和密码如果需要认证保持连接的时间间隔Keep Alive清除会话标志Clean Session遗嘱信息Will Message在客户端异常断开时发送的消息 CONNACK响应服务器回复CONNACK包告知连接是否成功包含 连接返回码0表示成功其他值表示各种错误会话状态标志指示是否有上一个会话 想象这个过程就像是你走进一个俱乐部先向保安出示会员卡TCP连接然后向接待员登记你的信息CONNECT最后接待员确认你可以进入并告诉你你的会员状态CONNACK。 发布/订阅过程 订阅过程 客户端发送SUBSCRIBE包指定要订阅的主题和QoS级别服务器回复SUBACK包确认订阅并返回授予的QoS级别 发布过程 发布者发送PUBLISH包包含主题、消息内容和QoS级别如果QoS 0则需要额外的确认包PUBACK、PUBREC、PUBREL、PUBCOMP QoS 1的消息流 发布者→PUBLISH→服务器服务器→PUBACK→发布者服务器→PUBLISH→订阅者订阅者→PUBACK→服务器 QoS 2的消息流 发布者→PUBLISH→服务器服务器→PUBREC→发布者发布者→PUBREL→服务器服务器→PUBCOMP→发布者服务器→PUBLISH→订阅者订阅者→PUBREC→服务器服务器→PUBREL→订阅者订阅者→PUBCOMP→服务器 看到这些确认过程是不是觉得QoS 2有点繁琐但这正是为了保证消息正好一次传递的代价就像快递公司为了确保贵重包裹安全送达会要求你签名、拍照、确认收货一样。 保持连接与断开 PINGREQ/PINGRESP客户端定期发送心跳包服务器回应以保持连接活跃DISCONNECT客户端发送断开连接的请求然后关闭TCP连接 这就像是你在图书馆学习偶尔举手让管理员知道你还在PING最后向管理员示意你要离开DISCONNECT。 MQTT底层TCP数据包分析 当MQTT协议工作时TCP层都发生了什么呢让我们揭开这个神秘的面纱 TCP连接建立三次握手 客户端 - [SYN] - 服务器 客户端 - [SYN, ACK] - 服务器 客户端 - [ACK] - 服务器MQTT CONNECT包 TCP头部:源端口: 随机端口(如43251)目标端口: 1883(标准MQTT端口)序列号: x确认号: y标志: PSH, ACKMQTT数据:包类型: CONNECT (1)剩余长度: 可变协议名: MQTT协议级别: 4(MQTT v3.1.1)或5(MQTT v5.0)连接标志: 用户名、密码、遗嘱等标志位保持连接: 通常为60秒客户端标识符: 如esp32_client_001[可选]用户名、密码等MQTT PUBLISH包(QoS 1) TCP头部:源端口: 随机端口目标端口: 1883序列号: xn确认号: ym标志: PSH, ACKMQTT数据:包类型: PUBLISH (3)剩余长度: 可变主题长度: 2字节长度前缀主题: 如home/livingroom/led包ID: 仅当QoS0时出现有效载荷: 如ON或OFF看到这些细节你是不是更能理解MQTT的工作原理了这些看似复杂的数据包本质上就是设备之间传递的便条告诉对方我想做什么或我已经做了什么。 ESP32S3使用MQTT控制LED实践 是时候将理论付诸实践了让我们使用ESP32S3通过MQTT协议来控制一个连接到IO9的LED。 硬件准备 ESP32S3开发板LED连接到IO9220欧姆电阻连接线 软件准备 安装Arduino IDE安装ESP32S3开发板支持安装PubSubClient库用于MQTT通信 代码实现 #include WiFi.h #include PubSubClient.h// WiFi配置 const char* ssid 你的WiFi名称; const char* password 你的WiFi密码;// MQTT配置 const char* mqtt_server 你的MQTT服务器地址; const int mqtt_port 1883; const char* mqtt_client_id ESP32S3_LED_Controller; const char* mqtt_topic home/esp32s3/led;// LED引脚 const int ledPin 9; // IO9WiFiClient espClient; PubSubClient client(espClient);void setup_wifi() {delay(10);Serial.println(连接到WiFi...);WiFi.begin(ssid, password);while (WiFi.status() ! WL_CONNECTED) {delay(500);Serial.print(.);}Serial.println(WiFi已连接);Serial.print(IP地址: );Serial.println(WiFi.localIP()); }void callback(char* topic, byte* payload, unsigned int length) {// 将接收的字节数组转换为字符串String message;for (int i 0; i length; i) {message (char)payload[i];}Serial.print(收到消息: );Serial.println(message);// 控制LEDif (message.equals(ON)) {digitalWrite(ledPin, HIGH);Serial.println(LED已打开);} else if (message.equals(OFF)) {digitalWrite(ledPin, LOW);Serial.println(LED已关闭);} }void reconnect() {while (!client.connected()) {Serial.print(尝试MQTT连接...);if (client.connect(mqtt_client_id)) {Serial.println(已连接);// 订阅控制主题client.subscribe(mqtt_topic);} else {Serial.print(连接失败错误码);Serial.print(client.state());Serial.println( 5秒后重试);delay(5000);}} }void setup() {pinMode(ledPin, OUTPUT);Serial.begin(115200);setup_wifi();client.setServer(mqtt_server, mqtt_port);client.setCallback(callback); }void loop() {if (!client.connected()) {reconnect();}// 处理MQTT消息client.loop(); }实现分析 当我们运行这个程序时ESP32S3会 连接到WiFi网络连接到MQTT服务器订阅home/esp32s3/led主题等待控制命令 当我们通过MQTT客户端如MQTT Explorer或手机App发布ON或OFF消息到home/esp32s3/led主题时ESP32S3会接收到消息并相应地控制LED。 这个过程中发生的TCP和MQTT通信可以通过Wireshark捕获。发布ON消息时我们将看到 MQTT PUBLISH包从发布者到MQTT服务器MQTT服务器将PUBLISH包转发给ESP32S3ESP32S3接收到PUBLISH包解析内容发现是ONESP32S3控制IO9引脚输出高电平点亮LED 这就像是我们在微信群MQTT服务器里发了一条消息开灯而ESP32S3正好在看这个群看到消息后立即执行了开灯的动作 MQTT的安全性考虑 在实际应用中安全性至关重要。MQTT本身并不提供加密但可以通过以下方式增强安全性 使用MQTT over TLS/SSL使用8883端口而不是标准的1883端口客户端身份验证使用用户名/密码或客户端证书访问控制列表(ACL)在服务器端配置限制客户端可以发布/订阅的主题 想象一下这就像是给你的微信群设置了密码并且限制了谁能发言、谁能看到消息。在物联网世界这种保护措施不是可选的而是必须的 MQTT的高级特性 除了基本功能外MQTT还有一些高级特性 保留消息服务器会保存标记为保留的消息新订阅者连接时立即收到遗嘱消息客户端异常断开时自动发布的消息共享订阅多个客户端共享同一个订阅实现负载均衡MQTT 5.0新特性消息过期、主题别名、用户属性等 这些功能让MQTT变得更加强大和灵活。就像一个初看简单的瑞士军刀打开后却发现它能完成各种意想不到的任务 MQTT与其他协议的对比 为什么选择MQTT而不是其他协议让我们做个对比 特性MQTTHTTPCoAPAMQP协议模型发布/订阅请求/响应请求/响应发布/订阅消息开销极小大小中等QoS级别0,1,2无可靠/不可靠复杂QoS适用场景低带宽网页应用资源受限企业消息 看到这个对比你会发现MQTT在物联网场景中的优势多么明显它就像是专为物联网量身定制的通信协议。
http://www.pierceye.com/news/613267/

相关文章:

  • 腾讯云10g数字盘做网站够么四川省建设人才网
  • 批量 网站标题中海园林建设有限公司网站
  • 鲜花网站数据库建设免费律师咨询
  • 团队网站建设哪家便宜制作公司网站流程
  • 青龙桥网站建设企业网页是什么
  • 上海网站建设备案号怎么恢复法律咨询网站开发
  • 烟台做网站价格动力网站建设
  • 北戴河网站建设墨刀制作网页教程
  • 成都网站设计开发做得好微信商城怎么开发
  • 江西省城乡建设培训网-官方网站上海建设集团有限公司
  • 凡科网站设计模板grimhelm wordpress
  • 自己做的网站不备案行吗建筑工程集团有限公司
  • 网站初期 权重怎么做彩票类网站开发
  • 南通网站定制公司服务器网站建设维护合同
  • 亳州做商标网站的公司免费的网站模板
  • 西南城乡建设部网站首页python3做网站教程
  • 网站首页设计欣赏个人电影网站建设
  • 导航网站建设怎么给网站图片加alt
  • 备案成功后怎么建设网站宠物喂养网页设计模板以及代码
  • 东莞哪家网站建设比较好wordpress更改语言设置
  • 如何找做网站的客户wordpress适合视频网站吗
  • 网站建设的业务流程图拔萝卜视频播放在线观看免费
  • 建个网站要多少钱高安网站制作
  • dw设计模板百度ocpc如何优化
  • 苏宁网站优化与推广html教程网站
  • 怎么做网站网页免费高清屏幕录像
  • 网络推广哪个网站好亚马逊网站开发使用的什么方式
  • 佛山企业网站建设咨询怎么从零开始做网站
  • dede移动端网站源码中国能建设计公司网站
  • 潍坊网站建设多少钱做网站seo优化