From cb3cbeba7b17deb777e9866b4718bb41527c3b37 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@63.com> Date: 星期六, 30 七月 2022 17:07:26 +0800 Subject: [PATCH] # --- src/main/java/com/zy/core/netty/IMessageBody.java | 11 +++ src/main/java/com/zy/core/netty/handle/ProtectorHandler.java | 4 src/main/java/com/zy/core/netty/constant/FireDataType.java | 30 ++++++++++ src/main/java/com/zy/core/netty/handle/PackageServerHandler.java | 13 ++++ src/main/java/com/zy/core/netty/domain/fire/Fire_3030.java | 76 +++++++++++++++++++++++++ 5 files changed, 131 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/zy/core/netty/IMessageBody.java b/src/main/java/com/zy/core/netty/IMessageBody.java new file mode 100644 index 0000000..d41e030 --- /dev/null +++ b/src/main/java/com/zy/core/netty/IMessageBody.java @@ -0,0 +1,11 @@ +package com.zy.core.netty; + +public interface IMessageBody { + + int DEFAULT_LEN = 256; + + byte[] writeToBytes(); + + IMessageBody readFromBytes(byte[] bytes); + +} diff --git a/src/main/java/com/zy/core/netty/constant/FireDataType.java b/src/main/java/com/zy/core/netty/constant/FireDataType.java new file mode 100644 index 0000000..d9f1a20 --- /dev/null +++ b/src/main/java/com/zy/core/netty/constant/FireDataType.java @@ -0,0 +1,30 @@ +package com.zy.core.netty.constant; + +public enum FireDataType { + + HEARTBEAT(0x30, 0x30, "蹇冭烦淇℃伅"), + + FIRE_ALARM(0x38, 0x30, "鐏"), + + ; + + public int byte1; + public int byte2; + public String des; + + FireDataType(int byte1, int byte2, String des) { + this.byte1 = byte1; + this.byte2 = byte2; + this.des = des; + } + + public static FireDataType get(int byte1, int byte2) { + for (FireDataType value : FireDataType.values()) { + if (byte1 == value.byte1 && byte2 == value.byte2) { + return value; + } + } + return null; + } + +} diff --git a/src/main/java/com/zy/core/netty/domain/fire/Fire_3030.java b/src/main/java/com/zy/core/netty/domain/fire/Fire_3030.java new file mode 100644 index 0000000..0c9a03e --- /dev/null +++ b/src/main/java/com/zy/core/netty/domain/fire/Fire_3030.java @@ -0,0 +1,76 @@ +package com.zy.core.netty.domain.fire; + +import com.zy.core.netty.IMessageBody; +import io.netty.buffer.ByteBuf; +import io.netty.buffer.ByteBufAllocator; +import io.netty.buffer.ByteBufUtil; +import lombok.Data; + +import java.nio.charset.StandardCharsets; + +/** + * 蹇冭烦 pac + * 8230303234303030303030313130353138303E303F3131383083 + * Created by vincent on 2022/7/30 + */ +@Data +public class Fire_3030 implements IMessageBody { + + private Integer no; + + private Integer year; + + private Integer month; + + private Integer day; + + private Integer hour; + + private Integer minute; + + private Integer seconds; + + private Integer validCode; + + @Override + public byte[] writeToBytes() { + ByteBuf byteBuf = ByteBufAllocator.DEFAULT.heapBuffer(DEFAULT_LEN); + byteBuf.writeShort(no); + // todo + return ByteBufUtil.getBytes(byteBuf); + } + + @Override + public Fire_3030 readFromBytes(byte[] bytes) { +// ByteBuf byteBuf = ByteBufAllocator.DEFAULT.heapBuffer(bytes.length > DEFAULT_LEN ? bytes.length + 100 : DEFAULT_LEN); +// byteBuf.writeBytes(bytes); +// byteBuf.resetReaderIndex(); +// byteBuf.skipBytes(3); +// this.no = byteBuf.readShort(); +// byteBuf.skipBytes(6); +// this.year = byteBuf.readShort(); +// this.month = byteBuf.readShort(); +// this.day = byteBuf.readShort(); +// this.hour = byteBuf.readShort(); +// this.minute = byteBuf.readShort(); +// this.seconds = byteBuf.readShort(); +// this.validCode = byteBuf.readShort(); +// byteBuf.skipBytes(1); +// byteBuf.release(); +// System.out.println(byteBuf.refCnt()); + this.no = analyze(new byte[]{bytes[3], bytes[4]}); + this.year = analyze(new byte[]{bytes[11], bytes[12]}); + this.month = analyze(new byte[]{bytes[13], bytes[14]}); + this.day = analyze(new byte[]{bytes[15], bytes[16]}); + this.hour = analyze(new byte[]{bytes[17], bytes[18]}); + this.minute = analyze(new byte[]{bytes[19], bytes[20]}); + this.seconds = analyze(new byte[]{bytes[21], bytes[22]}); + this.validCode = analyze(new byte[]{bytes[23], bytes[24]}); + return this; + } + + public static Integer analyze(byte[] bytes) { + return Integer.parseInt(new String(bytes, StandardCharsets.US_ASCII), 16); + } + +} diff --git a/src/main/java/com/zy/core/netty/handle/PackageServerHandler.java b/src/main/java/com/zy/core/netty/handle/PackageServerHandler.java index d91b1f1..3ebba0a 100644 --- a/src/main/java/com/zy/core/netty/handle/PackageServerHandler.java +++ b/src/main/java/com/zy/core/netty/handle/PackageServerHandler.java @@ -2,7 +2,9 @@ import com.zy.core.netty.AbstractInboundHandler; import com.zy.core.netty.cache.ChannelCache; +import com.zy.core.netty.constant.FireDataType; import com.zy.core.netty.domain.ChPackage; +import com.zy.core.netty.domain.fire.Fire_3030; import io.netty.channel.Channel; import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelHandlerContext; @@ -21,7 +23,16 @@ @Override protected boolean channelRead0(ChannelHandlerContext ctx, ChPackage pac) { - log.info("{}", pac.getBytes().length); + FireDataType dataType = FireDataType.get(pac.getBytes()[1], pac.getBytes()[2]); + switch (dataType) { + case HEARTBEAT: + Fire_3030 fire3030 = new Fire_3030().readFromBytes(pac.getBytes()); + break; + case FIRE_ALARM: + break; + default: + break; + } return true; } diff --git a/src/main/java/com/zy/core/netty/handle/ProtectorHandler.java b/src/main/java/com/zy/core/netty/handle/ProtectorHandler.java index ec0b43c..add63dd 100644 --- a/src/main/java/com/zy/core/netty/handle/ProtectorHandler.java +++ b/src/main/java/com/zy/core/netty/handle/ProtectorHandler.java @@ -62,8 +62,8 @@ @Override public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) { cause.printStackTrace(); - ChannelCache.removeChannel(ctx.channel()); - ctx.close(); +// ChannelCache.removeChannel(ctx.channel()); +// ctx.close(); } } -- Gitblit v1.9.1