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

物联网 基于netty构建mqtt协议规范(轻量级二进制协议)

物联网 基于netty构建mqtt协议规范(轻量级二进制协议)简述在物联网、游戏服务器、RPC 等场景中需要高效的网络通信。 二进制协议相比 JSON/XML 等文本协议具有更小的体积、更快的解析速度、更低的内存占用等优势。 设计一个简单的二进制协议并基于 Netty 实现完整的编解码器深入理解二进制协议的开发流程源码(netty-sample-03-Binary)https://gitee.com/kcnf-iot/iot-sample/tree/master/netty/netty-sample-03协议设计类 MQTT 风格 的轻量级二进制协议字段字节数描述魔数 (Magic)1固定为0xAA用于快速校验和过滤非法连接消息类型 (Type)11请求2响应3心跳消息ID (MsgId)4大端序整数用于请求-响应关联数据长度 (Length)2无符号短整型最大 65535表示后面数据字段的字节数数据 (Data)Length二进制数据例如 UTF-8 字符串或其他内容协议总长度1142Length 8Length 字节优点魔数帮助快速判断连接是否为合法客户端 长度字段为 2 字节可表示最大 64KB 的消息体适合小型物联网设备 消息 ID 使我们可以实现请求-响应的异步模型如 RPC为什么二进制协议更轻量特性文本协议 (JSON)二进制协议数字编码123占用3字节0x7B占用1字节布尔值true占用4字节1位或1字节字段名每次重复发送靠偏移量隐式约定解析开销字符串扫描、递归下降按位移位、直接取值示例{id:1}8字节若协议仅发送 id 数值只需 4 字节二进制 intserver代码package com.jysemel.iot.pojo; import com.jysemel.iot.pojo.coder.BinaryMessageDecoder; import com.jysemel.iot.pojo.coder.BinaryMessageEncoder; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.*; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.SocketChannel; import io.netty.channel.socket.nio.NioServerSocketChannel; public class BinaryProtocolServer { public static void main(String[] args) throws InterruptedException { EventLoopGroup bossGroup new NioEventLoopGroup(1); EventLoopGroup workerGroup new NioEventLoopGroup(); try { ServerBootstrap bootstrap new ServerBootstrap(); bootstrap.group(bossGroup, workerGroup) .channel(NioServerSocketChannel.class) .childHandler(new ChannelInitializerSocketChannel() { Override protected void initChannel(SocketChannel ch) { ChannelPipeline p ch.pipeline(); // 添加二进制解码器和编码器 p.addLast(new BinaryMessageDecoder()); p.addLast(new BinaryMessageEncoder()); p.addLast(new ServerBusinessHandler()); } }); ChannelFuture future bootstrap.bind(8088).sync(); System.out.println(二进制协议服务器启动端口 8088); future.channel().closeFuture().sync(); } finally { bossGroup.shutdownGracefully(); workerGroup.shutdownGracefully(); } } }client代码package com.jysemel.iot.pojo; import com.jysemel.iot.pojo.coder.BinaryMessageDecoder; import com.jysemel.iot.pojo.coder.BinaryMessageEncoder; import io.netty.bootstrap.Bootstrap; import io.netty.channel.*; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.SocketChannel; import io.netty.channel.socket.nio.NioSocketChannel; public class BinaryProtocolClient { public static void main(String[] args) throws InterruptedException { EventLoopGroup group new NioEventLoopGroup(); try { Bootstrap bootstrap new Bootstrap(); bootstrap.group(group) .channel(NioSocketChannel.class) .handler(new ChannelInitializerSocketChannel() { Override protected void initChannel(SocketChannel ch) { ChannelPipeline p ch.pipeline(); p.addLast(new BinaryMessageDecoder()); p.addLast(new BinaryMessageEncoder()); p.addLast(new ClientBusinessHandler()); } }); ChannelFuture future bootstrap.connect(127.0.0.1, 8088).sync(); future.channel().closeFuture().sync(); } finally { group.shutdownGracefully(); } } }验证结果
http://www.gsyq.cn/news/1334099.html

相关文章:

  • 突发!OpenAI 创始成员 Andrej Karpathy 加入 Anthropic四月 AI前线2026年5月20日 00:11 北京 17人
  • 从0.5秒到50毫秒:TMSpeech如何重定义本地语音识别的性能边界
  • 精益生产3步实操,让现场从混乱变标杆
  • 车间效率上不去?精益生产这套管理法,人效直接翻倍
  • 落地员工自主管理!4个关键动作,让员工自己管自己
  • Photoshop图层批量导出终极指南:如何快速将图层导出为独立文件
  • 保姆级教程:用Ansys Zemax非序列模式搞定LED光源建模(附避坑指南)
  • DDR内存信号质量不稳?手把手教你搞定ZQ Calibration(含PHY配置避坑点)
  • 2026年内墙益胶泥代理商哪家好?主流品牌代理商核心实力与适配场景解析 - 产业观察网
  • 2026年5月国产PCB厂家综合实力排行推荐:五大品牌专业评测解决夜班产线防断供痛点 - 品牌推荐
  • 厦门天车/龙门吊/航车/航吊/行吊/起重机销售/安装/维修/维保/威拓重机、鸿岳起重|全品类起重机一站式服务
  • 龙芯3A5000开发板PMON升级UEFI固件实战指南
  • STM32按键状态机:从消抖到复杂事件处理的嵌入式编程范式
  • 语音报警芯片选型与应用实战:NV020C与N9300深度解析
  • 无线充电方案全解析:从Qi标准到硬件设计,打造高效安全充电器
  • OmenSuperHub终极指南:3步解锁暗影精灵完整性能潜力
  • 光模块内部构造与光电转换原理深度解析
  • OpenWrt开发板固定IP配置:从网络原理到实战场景详解
  • 别再死记硬背BN公式了!用PyTorch和TensorFlow实战,5分钟搞懂批归一化怎么用
  • 2025-2026年添佰益电话查询:使用前请核实服务资质与合同条款 - 品牌推荐
  • 2026年金华区域二手设备回收top4正规服务商盘点:永康,义乌,东阳,金华废铜回收/金华废铜铝回收/排行一览 - 优质品牌商家
  • STM32+ESP8266项目实战:从零搭建一个物联网温湿度监测站(HAL库版)
  • 告别‘请格式化’!手把手教你为Android 10设备添加EXFAT/NTFS U盘支持(附完整源码修改流程)
  • 保姆级教程:用PyTorch从零复现YOLOv4(附完整代码与Mosaic数据增强实现)
  • 魔兽争霸3终极兼容性修复指南:让经典游戏在现代电脑上完美重生
  • 《流畅的Python》读书笔记06(补充01): 数据类构建器 - 三类数据容器对比(简洁版)
  • 2025-2026年北京睿信致成管理顾问有限公司电话查询:选择咨询机构前核实服务资质 - 品牌推荐
  • 终极指南:用CXPatcher在Mac上解锁CrossOver游戏性能的完整教程
  • 三大运营商齐推Token套餐,转型背后利弊几何?
  • 实时分析管道:构建实时数据处理和分析能力