From dfdc6bdfda10de4c01fb1cfe43cabf050e71f8c3 Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: Thu, 28 Dec 2023 14:50:54 +0800
Subject: [PATCH] 优化雷达tcp客户端

---
 src/main/java/com/ard/utils/netty/tcp/DynamicClient.java                         |    2 +-
 src/main/java/com/ard/utils/netty/tcp/BootNettyChannelInboundHandlerAdapter.java |   20 +++++++++++---------
 src/main/java/com/ard/utils/netty/tcp/ClientInitialize.java                      |    6 ++++--
 src/main/java/com/ard/utils/netty/tcp/ClientHandler.java                         |    3 ++-
 src/main/java/com/ard/utils/netty/tcp/MessageParsing.java                        |    4 ++--
 src/main/java/com/ard/utils/netty/tcp/BootNettyClient.java                       |    3 +--
 src/main/java/com/ard/utils/netty/tcp/DynamicClientHandler.java                  |   12 ++++++------
 7 files changed, 27 insertions(+), 23 deletions(-)

diff --git a/src/main/java/com/ard/utils/netty/tcp/BootNettyChannelInboundHandlerAdapter.java b/src/main/java/com/ard/utils/netty/tcp/BootNettyChannelInboundHandlerAdapter.java
index 561d287..5e49218 100644
--- a/src/main/java/com/ard/utils/netty/tcp/BootNettyChannelInboundHandlerAdapter.java
+++ b/src/main/java/com/ard/utils/netty/tcp/BootNettyChannelInboundHandlerAdapter.java
@@ -10,6 +10,7 @@
 import io.netty.buffer.ByteBuf;
 import io.netty.buffer.EmptyByteBuf;
 import io.netty.channel.*;
+import io.netty.util.CharsetUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 
@@ -33,17 +34,18 @@
         InetSocketAddress inSocket = (InetSocketAddress) ctx.channel().remoteAddress();
         String host = inSocket.getAddress().getHostAddress();
         int port = inSocket.getPort();
+        //log.info("收到来自 {}:{} 的数据{}", host, port,msg.toString(CharsetUtil.UTF_8));
         ArdEquipRadar ardEquipRadar = BootNettyClientChannelCache.getRadar(host + ":" + port);
         if (ardEquipRadar != null) {
-            // 创建缓冲中字节数的字节数组
-            byte[] byteArray = new byte[msg.readableBytes()];
-            // 写入数组
-            msg.readBytes(byteArray);
-            // 处理接收到的消息
-            byte[] bytes = MessageParsing.receiveCompletePacket(byteArray);
-            if (bytes != null) {
-                processData(ardEquipRadar, bytes);
-            }
+            //// 创建缓冲中字节数的字节数组
+            //byte[] byteArray = new byte[msg.readableBytes()];
+            //// 写入数组
+            //msg.readBytes(byteArray);
+            //// 处理接收到的消息
+            //byte[] bytes = MessageParsing.receiveCompletePacket(byteArray);
+            //if (bytes != null) {
+            //    processData(ardEquipRadar, bytes);
+            //}
         }
     }
 
diff --git a/src/main/java/com/ard/utils/netty/tcp/BootNettyClient.java b/src/main/java/com/ard/utils/netty/tcp/BootNettyClient.java
index da103a6..6a44e88 100644
--- a/src/main/java/com/ard/utils/netty/tcp/BootNettyClient.java
+++ b/src/main/java/com/ard/utils/netty/tcp/BootNettyClient.java
@@ -18,7 +18,7 @@
 
 @Slf4j(topic = "netty")
 @Component
-public class BootNettyClient implements ApplicationRunner {
+public class BootNettyClient {
     @Resource
     IArdEquipRadarService ardEquipRadarService;
     @Resource
@@ -94,7 +94,6 @@
     /**
      * 初始化方法
      */
-    @Override
     public void run(ApplicationArguments args) {
         if (!nettyTcpConfig.getEnabled()) {
             return;
diff --git a/src/main/java/com/ard/utils/netty/tcp/ClientHandler.java b/src/main/java/com/ard/utils/netty/tcp/ClientHandler.java
index 4d22142..c59dd32 100644
--- a/src/main/java/com/ard/utils/netty/tcp/ClientHandler.java
+++ b/src/main/java/com/ard/utils/netty/tcp/ClientHandler.java
@@ -88,10 +88,11 @@
         int port = ipSocket.getPort();
         String host = ipSocket.getHostString();
         ArdEquipRadar ardEquipRadar = ClientInitialize.tureConnectMap.get(host+":"+port);
+        MessageParsing messageParsing = ClientInitialize.MessageMap.get(host + ":" + port);
         // 处理接收到的消息
         byte[] byteArray = new byte[msg.readableBytes()];
         msg.getBytes(msg.readerIndex(), byteArray);
-        byte[] bytes = MessageParsing.receiveCompletePacket(byteArray);
+        byte[] bytes = messageParsing.receiveCompletePacket(byteArray);
         if (bytes != null) {
             processData(ardEquipRadar, bytes);
         }
diff --git a/src/main/java/com/ard/utils/netty/tcp/ClientInitialize.java b/src/main/java/com/ard/utils/netty/tcp/ClientInitialize.java
index cf9ef9a..ddd4f9c 100644
--- a/src/main/java/com/ard/utils/netty/tcp/ClientInitialize.java
+++ b/src/main/java/com/ard/utils/netty/tcp/ClientInitialize.java
@@ -37,7 +37,7 @@
 @Component
 @Slf4j(topic = "netty")
 @Order(2)
-public class ClientInitialize {
+public class ClientInitialize implements ApplicationRunner{
     @Resource
     NettyTcpConfiguration nettyTcpConfig;
     @Resource
@@ -47,6 +47,7 @@
     public static CopyOnWriteArraySet<ArdEquipRadar> falseConnectSet = new CopyOnWriteArraySet();
     public static ConcurrentHashMap<String, ArdEquipRadar> tureConnectMap = new ConcurrentHashMap();
     public static ConcurrentHashMap<String, Object> SuccessConnectMap = new ConcurrentHashMap();
+    public static ConcurrentHashMap<String, MessageParsing> MessageMap = new ConcurrentHashMap();
     /**
      * Netty初始化配置
      */
@@ -114,6 +115,7 @@
                 falseConnectSet.remove(ardEquipRadar);
                 // 连接成功信息写入map
                 tureConnectMap.put(host+":"+port, ardEquipRadar);
+                MessageMap.put(host+":"+port,new MessageParsing());
                 SuccessConnectMap.put(ardEquipRadar.getId(),futureListener.channel());
             }
         });
@@ -122,7 +124,7 @@
     /**
      * 初始化方法
      */
-   // @Override
+    @Override
     public void run(ApplicationArguments args) {
         if (!nettyTcpConfig.getEnabled()) {
             return;
diff --git a/src/main/java/com/ard/utils/netty/tcp/DynamicClient.java b/src/main/java/com/ard/utils/netty/tcp/DynamicClient.java
index 8d88675..82dfcdc 100644
--- a/src/main/java/com/ard/utils/netty/tcp/DynamicClient.java
+++ b/src/main/java/com/ard/utils/netty/tcp/DynamicClient.java
@@ -27,7 +27,7 @@
  **/
 @Slf4j(topic = "netty")
 @Component
-public class DynamicClient {
+public class DynamicClient{
     @Resource
     IArdEquipRadarService ardEquipRadarService;
     @Resource
diff --git a/src/main/java/com/ard/utils/netty/tcp/DynamicClientHandler.java b/src/main/java/com/ard/utils/netty/tcp/DynamicClientHandler.java
index 5eb32a1..1809740 100644
--- a/src/main/java/com/ard/utils/netty/tcp/DynamicClientHandler.java
+++ b/src/main/java/com/ard/utils/netty/tcp/DynamicClientHandler.java
@@ -47,12 +47,12 @@
         Channel channel = ctx.channel();
         ArdEquipRadar ardEquipRadar = DynamicClient.ConnectMap.get(channel);
         // 处理接收到的消息
-        byte[] byteArray = new byte[msg.readableBytes()];
-        msg.getBytes(msg.readerIndex(), byteArray);
-        byte[] bytes = MessageParsing.receiveCompletePacket(byteArray);
-        if (bytes != null) {
-            processData(ardEquipRadar, bytes);
-        }
+        //byte[] byteArray = new byte[msg.readableBytes()];
+        //msg.getBytes(msg.readerIndex(), byteArray);
+        //byte[] bytes = messageParsing.receiveCompletePacket(byteArray);
+        //if (bytes != null) {
+        //    processData(ardEquipRadar, bytes);
+        //}
     }
 
     @Override
diff --git a/src/main/java/com/ard/utils/netty/tcp/MessageParsing.java b/src/main/java/com/ard/utils/netty/tcp/MessageParsing.java
index 5326d47..4aac19d 100644
--- a/src/main/java/com/ard/utils/netty/tcp/MessageParsing.java
+++ b/src/main/java/com/ard/utils/netty/tcp/MessageParsing.java
@@ -16,12 +16,12 @@
  **/
 public class MessageParsing {
     // 创建缓冲区列表
-    private static List<Byte> buffer = new ArrayList<>();
+    private List<Byte> buffer = new ArrayList<>();
 
     /**
      * 接收完整包
      */
-    public static byte[] receiveCompletePacket(byte[] receivedData) {
+    public byte[] receiveCompletePacket(byte[] receivedData) {
         // 定义包尾字节序列
         byte[] packetEnd = {0x01, 0x02, 0x00};
         // 添加已接收的数据到缓冲区

--
Gitblit v1.9.3