DLT10376协议的netty decoder

发布时间:2026/10/20 23:08:32
DLT10376协议的netty decoder 应该有人会找这个吧谁用留个评论packagecom.wisdompoint.wpbuilder.io.zt.nettyserver.message;importcn.hutool.core.util.ArrayUtil;importcn.hutool.core.util.ByteUtil;importio.netty.buffer.ByteBuf;importio.netty.buffer.Unpooled;importio.netty.channel.ChannelHandlerContext;importio.netty.handler.codec.ByteToMessageDecoder;importorg.apache.commons.lang3.ArrayUtils;importjava.nio.ByteOrder;importjava.util.Arrays;importjava.util.List;publicclassDLT10376DecoderextendsByteToMessageDecoder{privatestaticfinalbyteHEADER0x68;privatestaticfinalbyteFOOTER0x16;/** * 起始字符 68H * 长度 3A01 * 长度 3A01 * 起始字符 68H * 控制域C * 地址域A * 链路用户数据 * 校验和CS * 结束字符 16H * * 长度 是控制域、地址域、链路用户数据之和 * */Overrideprotectedvoiddecode(ChannelHandlerContextchannelHandlerContext,ByteBufin,ListObjectout)throwsException{while(in.isReadable()){in.markReaderIndex();byteheaderBytein.readByte();if(headerByte!HEADER){continue;}byte[]headBytesnewbyte[5];in.readBytes(headBytes);byte[]L1ArrArrayUtils.subarray(headBytes,0,2);byte[]L2ArrArrayUtils.subarray(headBytes,2,4);bytesecondHeaderheadBytes[4];if(!Arrays.equals(L1Arr,L2Arr)||secondHeader!HEADER){continue;}// 小端序转 short (16位)shortlittleEndianValByteUtil.bytesToShort(L1Arr,ByteOrder.LITTLE_ENDIAN);// 右移2位intlength(littleEndianVal0xFFFF)2;// 78intreadableBytesin.readableBytes();if(readableByteslength2){in.resetReaderIndex();//可读数据不够 重置索引继续读取数据return;}byte[]restBytesnewbyte[length2];in.readBytes(restBytes);//判断最后一个if(restBytes[restBytes.length-1]!FOOTER){continue;}//组合整个报文帧byte[]framenewbyte[]{headerByte};frameArrayUtil.addAll(frame,headBytes,restBytes);booleanbvalidateFrame(frame);if(b){out.add(Unpooled.wrappedBuffer(frame));}}}/** * 计算报文帧的校验和 * param frame * return */booleanvalidateFrame(byte[]frame){if(frame[0]!HEADER){returnfalse;}intcsframe[frame.length-2]0xFF;intsum0;for(inti6;iframe.length-2;i){sum(sumframe[i])0xFF;}returncssum;}}

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询