From 4e85f4cc05b6acff2c8f402bf2153908e9835caf Mon Sep 17 00:00:00 2001 From: Guoqs <123@jsowell.com> Date: Sun, 29 Dec 2024 11:18:42 +0800 Subject: [PATCH 1/6] update --- .../netty/decoder/YouDianProtocolDecoder.java | 66 +++++++++---------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/decoder/YouDianProtocolDecoder.java b/jsowell-netty/src/main/java/com/jsowell/netty/decoder/YouDianProtocolDecoder.java index c0e1f7422..0afba46f5 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/decoder/YouDianProtocolDecoder.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/decoder/YouDianProtocolDecoder.java @@ -61,13 +61,13 @@ public class YouDianProtocolDecoder extends ByteToMessageDecoder { } // 检查包头是否是 68 协议 - // if (buffer.readableBytes() >= HEADER_LENGTH_68) { - // if (buffer.getUnsignedByte(beginReader) == 0x68) { - // // 处理 68 协议 - // decode68Message(buffer, out, beginReader); - // return; - // } - // } + if (buffer.readableBytes() >= HEADER_LENGTH_68) { + if (buffer.getUnsignedByte(beginReader) == 0x68) { + // 处理 68 协议 + decode68Message(buffer, out, beginReader); + return; + } + } // 未知协议,还原读指针 buffer.resetReaderIndex(); @@ -85,34 +85,34 @@ public class YouDianProtocolDecoder extends ByteToMessageDecoder { } // 判断是否为68包头 - // private boolean isStartOf68Header(ByteBuf buffer, int beginReader) { - // if (buffer.readableBytes() >= HEADER_LENGTH_68) { - // return buffer.getUnsignedByte(beginReader) == 0x68; - // } - // return false; - // } + private boolean isStartOf68Header(ByteBuf buffer, int beginReader) { + if (buffer.readableBytes() >= HEADER_LENGTH_68) { + return buffer.getUnsignedByte(beginReader) == 0x68; + } + return false; + } // 处理68协议消息 - // private void decode68Message(ByteBuf buffer, List out, int beginReader) { - // // 检查剩余数据是否足够 - // if (buffer.readableBytes() < HEADER_LENGTH_68 + 1 + 2) { - // buffer.readerIndex(beginReader); - // return; - // } - // - // // 获取消息长度 - // int length = buffer.getUnsignedByte(beginReader + HEADER_LENGTH_68); - // // 检查剩余数据是否足够 - // if (buffer.readableBytes() < HEADER_LENGTH_68 + 1 + length + 2) { - // buffer.readerIndex(beginReader); - // return; - // } - // - // // 读取 data 数据 最后+2是帧校验域长度 - // ByteBuf frame = buffer.retainedSlice(beginReader, HEADER_LENGTH_68 + 1 + length + 2); - // buffer.readerIndex(beginReader + HEADER_LENGTH_68 + 1 + length + 2); - // out.add(frame); - // } + private void decode68Message(ByteBuf buffer, List out, int beginReader) { + // 检查剩余数据是否足够 + if (buffer.readableBytes() < HEADER_LENGTH_68 + 1 + 2) { + buffer.readerIndex(beginReader); + return; + } + + // 获取消息长度 + int length = buffer.getUnsignedByte(beginReader + HEADER_LENGTH_68); + // 检查剩余数据是否足够 + if (buffer.readableBytes() < HEADER_LENGTH_68 + 1 + length + 2) { + buffer.readerIndex(beginReader); + return; + } + + // 读取 data 数据 最后+2是帧校验域长度 + ByteBuf frame = buffer.retainedSlice(beginReader, HEADER_LENGTH_68 + 1 + length + 2); + buffer.readerIndex(beginReader + HEADER_LENGTH_68 + 1 + length + 2); + out.add(frame); + } // 处理DNY协议消息 private void decodeDnyMessage(ByteBuf buffer, List out, int beginReader) { From 1780865f9f4cad58b006112d3b00e3c4e750009c Mon Sep 17 00:00:00 2001 From: Guoqs <123@jsowell.com> Date: Sun, 29 Dec 2024 11:24:50 +0800 Subject: [PATCH 2/6] =?UTF-8?q?update=20=E7=94=B5=E5=8D=95=E8=BD=A6netty?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E5=86=85=E5=AD=98=E6=B1=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../netty/decoder/YouDianProtocolDecoder.java | 66 +++++++++---------- .../netty/server/NettyServerManager.java | 1 + 2 files changed, 34 insertions(+), 33 deletions(-) diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/decoder/YouDianProtocolDecoder.java b/jsowell-netty/src/main/java/com/jsowell/netty/decoder/YouDianProtocolDecoder.java index 0afba46f5..c0e1f7422 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/decoder/YouDianProtocolDecoder.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/decoder/YouDianProtocolDecoder.java @@ -61,13 +61,13 @@ public class YouDianProtocolDecoder extends ByteToMessageDecoder { } // 检查包头是否是 68 协议 - if (buffer.readableBytes() >= HEADER_LENGTH_68) { - if (buffer.getUnsignedByte(beginReader) == 0x68) { - // 处理 68 协议 - decode68Message(buffer, out, beginReader); - return; - } - } + // if (buffer.readableBytes() >= HEADER_LENGTH_68) { + // if (buffer.getUnsignedByte(beginReader) == 0x68) { + // // 处理 68 协议 + // decode68Message(buffer, out, beginReader); + // return; + // } + // } // 未知协议,还原读指针 buffer.resetReaderIndex(); @@ -85,34 +85,34 @@ public class YouDianProtocolDecoder extends ByteToMessageDecoder { } // 判断是否为68包头 - private boolean isStartOf68Header(ByteBuf buffer, int beginReader) { - if (buffer.readableBytes() >= HEADER_LENGTH_68) { - return buffer.getUnsignedByte(beginReader) == 0x68; - } - return false; - } + // private boolean isStartOf68Header(ByteBuf buffer, int beginReader) { + // if (buffer.readableBytes() >= HEADER_LENGTH_68) { + // return buffer.getUnsignedByte(beginReader) == 0x68; + // } + // return false; + // } // 处理68协议消息 - private void decode68Message(ByteBuf buffer, List out, int beginReader) { - // 检查剩余数据是否足够 - if (buffer.readableBytes() < HEADER_LENGTH_68 + 1 + 2) { - buffer.readerIndex(beginReader); - return; - } - - // 获取消息长度 - int length = buffer.getUnsignedByte(beginReader + HEADER_LENGTH_68); - // 检查剩余数据是否足够 - if (buffer.readableBytes() < HEADER_LENGTH_68 + 1 + length + 2) { - buffer.readerIndex(beginReader); - return; - } - - // 读取 data 数据 最后+2是帧校验域长度 - ByteBuf frame = buffer.retainedSlice(beginReader, HEADER_LENGTH_68 + 1 + length + 2); - buffer.readerIndex(beginReader + HEADER_LENGTH_68 + 1 + length + 2); - out.add(frame); - } + // private void decode68Message(ByteBuf buffer, List out, int beginReader) { + // // 检查剩余数据是否足够 + // if (buffer.readableBytes() < HEADER_LENGTH_68 + 1 + 2) { + // buffer.readerIndex(beginReader); + // return; + // } + // + // // 获取消息长度 + // int length = buffer.getUnsignedByte(beginReader + HEADER_LENGTH_68); + // // 检查剩余数据是否足够 + // if (buffer.readableBytes() < HEADER_LENGTH_68 + 1 + length + 2) { + // buffer.readerIndex(beginReader); + // return; + // } + // + // // 读取 data 数据 最后+2是帧校验域长度 + // ByteBuf frame = buffer.retainedSlice(beginReader, HEADER_LENGTH_68 + 1 + length + 2); + // buffer.readerIndex(beginReader + HEADER_LENGTH_68 + 1 + length + 2); + // out.add(frame); + // } // 处理DNY协议消息 private void decodeDnyMessage(ByteBuf buffer, List out, int beginReader) { diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/server/NettyServerManager.java b/jsowell-netty/src/main/java/com/jsowell/netty/server/NettyServerManager.java index 4c318795a..b1e9b06b5 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/server/NettyServerManager.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/server/NettyServerManager.java @@ -96,6 +96,7 @@ public class NettyServerManager implements CommandLineRunner { .handler(new LoggingHandler(LogLevel.DEBUG)) .option(ChannelOption.SO_BACKLOG, 128) .option(ChannelOption.SO_REUSEADDR, true) + .option(ChannelOption.ALLOCATOR, PooledByteBufAllocator.DEFAULT) // 启用池化内存分配器 .childOption(ChannelOption.SO_KEEPALIVE, true) .childOption(ChannelOption.SO_REUSEADDR, true) .childHandler(electricBicyclesServerChannelInitializer) From 874388b405fc2ccb6ddb3b72cfa96c3f3196e518 Mon Sep 17 00:00:00 2001 From: Guoqs <123@jsowell.com> Date: Sun, 29 Dec 2024 12:53:44 +0800 Subject: [PATCH 3/6] update --- .../main/java/com/jsowell/netty/server/NettyServerManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/server/NettyServerManager.java b/jsowell-netty/src/main/java/com/jsowell/netty/server/NettyServerManager.java index b1e9b06b5..f316dc179 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/server/NettyServerManager.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/server/NettyServerManager.java @@ -54,7 +54,7 @@ public class NettyServerManager implements CommandLineRunner { .handler(new LoggingHandler(LogLevel.DEBUG)) // .option(ChannelOption.SO_BACKLOG, 128) // 默认128 .option(ChannelOption.SO_BACKLOG, 1024) - .option(ChannelOption.ALLOCATOR, PooledByteBufAllocator.DEFAULT) // 启用池化内存分配器 + // .option(ChannelOption.ALLOCATOR, PooledByteBufAllocator.DEFAULT) // 启用池化内存分配器 // .option(ChannelOption.SO_REUSEADDR, true) .childOption(ChannelOption.SO_KEEPALIVE, true) // 保持连接 // .childOption(ChannelOption.SO_RCVBUF, 64 * 1024) // 接收缓冲区 From a4d553c6ef2bd2d304e6705249c5cb9d576c0a8e Mon Sep 17 00:00:00 2001 From: Guoqs <123@jsowell.com> Date: Sun, 29 Dec 2024 12:54:05 +0800 Subject: [PATCH 4/6] =?UTF-8?q?Revert=20"=E6=89=8B=E5=8A=A8=E9=87=8A?= =?UTF-8?q?=E6=94=BE=E5=AF=B9=E8=B1=A1"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 458c216a6d88f460f16bdc24a76391a3218d5c05. --- .../ElectricBicyclesServerHandler.java | 42 ++++++++----------- 1 file changed, 18 insertions(+), 24 deletions(-) diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/server/electricbicycles/ElectricBicyclesServerHandler.java b/jsowell-netty/src/main/java/com/jsowell/netty/server/electricbicycles/ElectricBicyclesServerHandler.java index c7c7e4f5e..60ec3d11d 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/server/electricbicycles/ElectricBicyclesServerHandler.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/server/electricbicycles/ElectricBicyclesServerHandler.java @@ -8,7 +8,6 @@ import com.jsowell.netty.service.electricbicycles.EBikeBusinessService; import io.netty.buffer.ByteBuf; import io.netty.channel.*; import io.netty.handler.timeout.ReadTimeoutException; -import io.netty.util.ReferenceCountUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -61,30 +60,25 @@ public class ElectricBicyclesServerHandler extends ChannelInboundHandlerAdapter */ @Override public void channelRead(ChannelHandlerContext ctx, Object message) throws Exception { - try { - byte[] msg = (byte[]) message; - // 处理数据 - byte[] response = eBikeService.process(msg, ctx); - if (Objects.nonNull(response)) { - log.info("[电单车===>响应数据]:{}", BytesUtil.binary(response, 16)); - // 响应客户端 - ByteBuf buffer = ctx.alloc().buffer().writeBytes(response); - // this.channelWrite(channel.id(), buffer); - ctx.writeAndFlush(buffer); - // if (!CollectionUtils.containsAny(notPrintFrameTypeList, frameType)) { - // // 应答帧类型 - // byte[] responseFrameTypeBytes = YKCFrameTypeCode.PlatformAnswersRelation.getResponseFrameTypeBytes(frameTypeBytes); - // String responseFrameType = YKCUtils.frameType2Str(responseFrameTypeBytes); - // log.info("【>>>>>平台响应消息>>>>>】channel:{}, 响应帧类型:{}, 响应帧名称:{}, 原帧类型:{}, 原帧名称:{}, 序列号域:{}, response:{}", - // channel.id(), responseFrameType, YKCFrameTypeCode.getFrameTypeStr(responseFrameType), - // frameType, YKCFrameTypeCode.getFrameTypeStr(frameType), serialNumber, - // BytesUtil.binary(response, 16)); - // } - } - } finally { - ReferenceCountUtil.release(message); + byte[] msg = (byte[]) message; + // 处理数据 + byte[] response = eBikeService.process(msg, ctx); + if (Objects.nonNull(response)) { + log.info("[电单车===>响应数据]:{}", BytesUtil.binary(response, 16)); + // 响应客户端 + ByteBuf buffer = ctx.alloc().buffer().writeBytes(response); + // this.channelWrite(channel.id(), buffer); + ctx.writeAndFlush(buffer); + // if (!CollectionUtils.containsAny(notPrintFrameTypeList, frameType)) { + // // 应答帧类型 + // byte[] responseFrameTypeBytes = YKCFrameTypeCode.PlatformAnswersRelation.getResponseFrameTypeBytes(frameTypeBytes); + // String responseFrameType = YKCUtils.frameType2Str(responseFrameTypeBytes); + // log.info("【>>>>>平台响应消息>>>>>】channel:{}, 响应帧类型:{}, 响应帧名称:{}, 原帧类型:{}, 原帧名称:{}, 序列号域:{}, response:{}", + // channel.id(), responseFrameType, YKCFrameTypeCode.getFrameTypeStr(responseFrameType), + // frameType, YKCFrameTypeCode.getFrameTypeStr(frameType), serialNumber, + // BytesUtil.binary(response, 16)); + // } } - } /** From 981b6f88729d24a3b264b78baac3ba19ed319486 Mon Sep 17 00:00:00 2001 From: Guoqs <123@jsowell.com> Date: Sun, 29 Dec 2024 17:24:19 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E5=8F=8B=E7=94=B5netty=E4=B8=8D=E7=94=A8?= =?UTF-8?q?=E4=B8=BB=E5=8A=A8=E9=87=8A=E6=94=BE=E5=86=85=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/jsowell/netty/decoder/YouDianProtocolDecoder.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/decoder/YouDianProtocolDecoder.java b/jsowell-netty/src/main/java/com/jsowell/netty/decoder/YouDianProtocolDecoder.java index c0e1f7422..4bc09ecd6 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/decoder/YouDianProtocolDecoder.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/decoder/YouDianProtocolDecoder.java @@ -4,7 +4,6 @@ import com.jsowell.common.constant.Constants; import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandlerContext; import io.netty.handler.codec.ByteToMessageDecoder; -import io.netty.util.ReferenceCountUtil; import lombok.extern.slf4j.Slf4j; import java.nio.charset.StandardCharsets; @@ -136,9 +135,9 @@ public class YouDianProtocolDecoder extends ByteToMessageDecoder { buffer.readerIndex(beginReader + HEADER_LENGTH_DNY + length + 2); out.add(frame); } finally { - if (frame != null) { - ReferenceCountUtil.release(frame); - } + // if (frame != null) { + // ReferenceCountUtil.release(frame); + // } } } From a0d8122ef21f503ed6bce3f82ff980485f4f1730 Mon Sep 17 00:00:00 2001 From: Guoqs <123@jsowell.com> Date: Mon, 30 Dec 2024 09:16:05 +0800 Subject: [PATCH 6/6] =?UTF-8?q?update=20=E5=8F=8B=E7=94=B5netty=E4=B8=8D?= =?UTF-8?q?=E7=94=A8=E4=B8=BB=E5=8A=A8=E9=87=8A=E6=94=BE=E5=86=85=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/jsowell/netty/server/NettyServerManager.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/server/NettyServerManager.java b/jsowell-netty/src/main/java/com/jsowell/netty/server/NettyServerManager.java index f316dc179..6da634de2 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/server/NettyServerManager.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/server/NettyServerManager.java @@ -54,7 +54,7 @@ public class NettyServerManager implements CommandLineRunner { .handler(new LoggingHandler(LogLevel.DEBUG)) // .option(ChannelOption.SO_BACKLOG, 128) // 默认128 .option(ChannelOption.SO_BACKLOG, 1024) - // .option(ChannelOption.ALLOCATOR, PooledByteBufAllocator.DEFAULT) // 启用池化内存分配器 + .option(ChannelOption.ALLOCATOR, PooledByteBufAllocator.DEFAULT) // 启用池化内存分配器 // .option(ChannelOption.SO_REUSEADDR, true) .childOption(ChannelOption.SO_KEEPALIVE, true) // 保持连接 // .childOption(ChannelOption.SO_RCVBUF, 64 * 1024) // 接收缓冲区 @@ -96,7 +96,7 @@ public class NettyServerManager implements CommandLineRunner { .handler(new LoggingHandler(LogLevel.DEBUG)) .option(ChannelOption.SO_BACKLOG, 128) .option(ChannelOption.SO_REUSEADDR, true) - .option(ChannelOption.ALLOCATOR, PooledByteBufAllocator.DEFAULT) // 启用池化内存分配器 + // .option(ChannelOption.ALLOCATOR, PooledByteBufAllocator.DEFAULT) // 启用池化内存分配器 .childOption(ChannelOption.SO_KEEPALIVE, true) .childOption(ChannelOption.SO_REUSEADDR, true) .childHandler(electricBicyclesServerChannelInitializer)