From b0926cd91651c158a3a1c070f9b6d2d8ce877cfe Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期二, 26 三月 2024 10:07:33 +0800
Subject: [PATCH] 优化雷达连接

---
 /dev/null                                                         |  180 ---------------
 src/main/java/com/ard/utils/netty/tcp/NettyInit.java              |   49 ++++
 src/main/java/com/ard/utils/netty/tcp/RadarNettyTcpClient.java    |  189 +++++++++++++++
 src/main/java/com/ard/alarm/radar/controller/RadarController.java |    5 
 ard-alarm.iml                                                     |  151 ++++++------
 src/main/java/com/ard/config/AsyncConfiguration.java              |   23 +
 src/main/java/com/ard/utils/netty/tcp/handler/ClientHandler.java  |   42 +--
 pom.xml                                                           |   14 +
 src/main/java/com/ard/utils/netty/tcp/handler/MessageHandler.java |    9 
 9 files changed, 373 insertions(+), 289 deletions(-)

diff --git a/ard-alarm.iml b/ard-alarm.iml
index 33b98bb..d2cbf76 100644
--- a/ard-alarm.iml
+++ b/ard-alarm.iml
@@ -25,78 +25,77 @@
     </content>
     <orderEntry type="inheritedJdk" />
     <orderEntry type="sourceFolder" forTests="false" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.7.12" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.7.12" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-context:5.3.27" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.7.12" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.7.12" level="project" />
-    <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.12" level="project" />
-    <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.12" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.5.14" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.5.14" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-context:5.3.20" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.5.14" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.5.14" level="project" />
+    <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.11" level="project" />
+    <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.11" level="project" />
     <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.17.2" level="project" />
     <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.17.2" level="project" />
     <orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.36" level="project" />
     <orderEntry type="library" name="Maven: jakarta.annotation:jakarta.annotation-api:1.3.5" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-core:5.3.27" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.3.27" level="project" />
-    <orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.30" level="project" />
-    <orderEntry type="library" name="Maven: io.netty:netty-all:4.1.92.Final" level="project" />
-    <orderEntry type="library" name="Maven: io.netty:netty-buffer:4.1.92.Final" level="project" />
-    <orderEntry type="library" name="Maven: io.netty:netty-codec:4.1.92.Final" level="project" />
-    <orderEntry type="library" name="Maven: io.netty:netty-codec-dns:4.1.92.Final" level="project" />
-    <orderEntry type="library" name="Maven: io.netty:netty-codec-haproxy:4.1.92.Final" level="project" />
-    <orderEntry type="library" name="Maven: io.netty:netty-codec-http:4.1.92.Final" level="project" />
-    <orderEntry type="library" name="Maven: io.netty:netty-codec-http2:4.1.92.Final" level="project" />
-    <orderEntry type="library" name="Maven: io.netty:netty-codec-memcache:4.1.92.Final" level="project" />
-    <orderEntry type="library" name="Maven: io.netty:netty-codec-mqtt:4.1.92.Final" level="project" />
-    <orderEntry type="library" name="Maven: io.netty:netty-codec-redis:4.1.92.Final" level="project" />
-    <orderEntry type="library" name="Maven: io.netty:netty-codec-smtp:4.1.92.Final" level="project" />
-    <orderEntry type="library" name="Maven: io.netty:netty-codec-socks:4.1.92.Final" level="project" />
-    <orderEntry type="library" name="Maven: io.netty:netty-codec-stomp:4.1.92.Final" level="project" />
-    <orderEntry type="library" name="Maven: io.netty:netty-codec-xml:4.1.92.Final" level="project" />
-    <orderEntry type="library" name="Maven: io.netty:netty-common:4.1.92.Final" level="project" />
-    <orderEntry type="library" name="Maven: io.netty:netty-handler:4.1.92.Final" level="project" />
-    <orderEntry type="library" name="Maven: io.netty:netty-transport-native-unix-common:4.1.92.Final" level="project" />
-    <orderEntry type="library" name="Maven: io.netty:netty-handler-proxy:4.1.92.Final" level="project" />
-    <orderEntry type="library" name="Maven: io.netty:netty-handler-ssl-ocsp:4.1.92.Final" level="project" />
-    <orderEntry type="library" name="Maven: io.netty:netty-resolver:4.1.92.Final" level="project" />
-    <orderEntry type="library" name="Maven: io.netty:netty-resolver-dns:4.1.92.Final" level="project" />
-    <orderEntry type="library" name="Maven: io.netty:netty-transport:4.1.92.Final" level="project" />
-    <orderEntry type="library" name="Maven: io.netty:netty-transport-rxtx:4.1.92.Final" level="project" />
-    <orderEntry type="library" name="Maven: io.netty:netty-transport-sctp:4.1.92.Final" level="project" />
-    <orderEntry type="library" name="Maven: io.netty:netty-transport-udt:4.1.92.Final" level="project" />
-    <orderEntry type="library" name="Maven: io.netty:netty-transport-classes-epoll:4.1.92.Final" level="project" />
-    <orderEntry type="library" name="Maven: io.netty:netty-transport-classes-kqueue:4.1.92.Final" level="project" />
-    <orderEntry type="library" name="Maven: io.netty:netty-resolver-dns-classes-macos:4.1.92.Final" level="project" />
-    <orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-transport-native-epoll:linux-x86_64:4.1.92.Final" level="project" />
-    <orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-transport-native-epoll:linux-aarch_64:4.1.92.Final" level="project" />
-    <orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-transport-native-kqueue:osx-x86_64:4.1.92.Final" level="project" />
-    <orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-transport-native-kqueue:osx-aarch_64:4.1.92.Final" level="project" />
-    <orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-resolver-dns-native-macos:osx-x86_64:4.1.92.Final" level="project" />
-    <orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-resolver-dns-native-macos:osx-aarch_64:4.1.92.Final" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-core:5.3.20" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.3.20" level="project" />
+    <orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.28" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-all:4.1.77.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-buffer:4.1.77.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-codec:4.1.77.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-codec-dns:4.1.77.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-codec-haproxy:4.1.77.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-codec-http:4.1.77.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-codec-http2:4.1.77.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-codec-memcache:4.1.77.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-codec-mqtt:4.1.77.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-codec-redis:4.1.77.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-codec-smtp:4.1.77.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-codec-socks:4.1.77.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-codec-stomp:4.1.77.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-codec-xml:4.1.77.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-common:4.1.77.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-handler:4.1.77.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-handler-proxy:4.1.77.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-resolver:4.1.77.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-resolver-dns:4.1.77.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-transport:4.1.77.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-transport-rxtx:4.1.77.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-transport-sctp:4.1.77.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-transport-udt:4.1.77.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-transport-classes-epoll:4.1.77.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-transport-native-unix-common:4.1.77.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-transport-classes-kqueue:4.1.77.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-resolver-dns-classes-macos:4.1.77.Final" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-transport-native-epoll:linux-x86_64:4.1.77.Final" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-transport-native-epoll:linux-aarch_64:4.1.77.Final" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-transport-native-kqueue:osx-x86_64:4.1.77.Final" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-transport-native-kqueue:osx-aarch_64:4.1.77.Final" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-resolver-dns-native-macos:osx-x86_64:4.1.77.Final" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: io.netty:netty-resolver-dns-native-macos:osx-aarch_64:4.1.77.Final" level="project" />
     <orderEntry type="library" name="Maven: org.springframework.integration:spring-integration-mqtt:6.0.3" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.integration:spring-integration-core:5.5.18" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-aop:5.3.27" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-messaging:5.3.27" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-tx:5.3.27" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.retry:spring-retry:1.3.4" level="project" />
-    <orderEntry type="library" name="Maven: io.projectreactor:reactor-core:3.4.29" level="project" />
-    <orderEntry type="library" name="Maven: org.reactivestreams:reactive-streams:1.0.4" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.integration:spring-integration-core:5.5.12" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-aop:5.3.20" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-messaging:5.3.20" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-tx:5.3.20" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.retry:spring-retry:1.3.3" level="project" />
+    <orderEntry type="library" name="Maven: io.projectreactor:reactor-core:3.4.18" level="project" />
+    <orderEntry type="library" name="Maven: org.reactivestreams:reactive-streams:1.0.3" level="project" />
     <orderEntry type="library" name="Maven: org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.5" level="project" />
     <orderEntry type="library" name="Maven: com.alibaba.fastjson2:fastjson2:2.0.23" level="project" />
-    <orderEntry type="library" name="Maven: org.projectlombok:lombok:1.18.26" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.7.12" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-json:2.7.12" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.13.5" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.13.5" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.13.5" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:2.7.12" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:9.0.75" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-el:9.0.75" level="project" />
-    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:9.0.75" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-web:5.3.27" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-beans:5.3.27" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:5.3.27" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-expression:5.3.27" level="project" />
+    <orderEntry type="library" name="Maven: org.projectlombok:lombok:1.18.24" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.5.14" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-json:2.5.14" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.12.6" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.12.6" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.12.6" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:2.5.14" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:9.0.63" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-el:9.0.63" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:9.0.63" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-web:5.3.20" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-beans:5.3.20" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:5.3.20" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-expression:5.3.20" level="project" />
     <orderEntry type="library" name="Maven: net.java.dev.jna:jna:5.4.0" level="project" />
     <orderEntry type="library" name="Maven: net.java.examples:examples:1.0.0" level="project" />
     <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-generator:3.5.3.1" level="project" />
@@ -118,6 +117,11 @@
     <orderEntry type="library" name="Maven: com.oracle.ojdbc:simplefan:19.3.0.0" level="project" />
     <orderEntry type="library" name="Maven: com.oracle.ojdbc:ons:19.3.0.0" level="project" />
     <orderEntry type="library" name="Maven: com.oracle.database.nls:orai18n:21.1.0.0" level="project" />
+    <orderEntry type="library" name="Maven: com.squareup.okhttp3:okhttp:4.8.1" level="project" />
+    <orderEntry type="library" name="Maven: com.squareup.okio:okio:2.7.0" level="project" />
+    <orderEntry type="library" name="Maven: org.jetbrains.kotlin:kotlin-stdlib-common:1.5.32" level="project" />
+    <orderEntry type="library" name="Maven: org.jetbrains.kotlin:kotlin-stdlib:1.5.32" level="project" />
+    <orderEntry type="library" name="Maven: org.jetbrains:annotations:13.0" level="project" />
     <orderEntry type="library" name="Maven: io.minio:minio:8.3.5" level="project" />
     <orderEntry type="library" name="Maven: com.carrotsearch.thirdparty:simple-xml-safe:2.7.1" level="project" />
     <orderEntry type="library" name="Maven: com.google.guava:guava:30.1.1-jre" level="project" />
@@ -126,14 +130,9 @@
     <orderEntry type="library" name="Maven: com.google.code.findbugs:jsr305:3.0.2" level="project" />
     <orderEntry type="library" name="Maven: com.google.errorprone:error_prone_annotations:2.5.1" level="project" />
     <orderEntry type="library" name="Maven: com.google.j2objc:j2objc-annotations:1.3" level="project" />
-    <orderEntry type="library" name="Maven: com.squareup.okhttp3:okhttp:4.9.3" level="project" />
-    <orderEntry type="library" name="Maven: com.squareup.okio:okio:2.8.0" level="project" />
-    <orderEntry type="library" name="Maven: org.jetbrains.kotlin:kotlin-stdlib-common:1.6.21" level="project" />
-    <orderEntry type="library" name="Maven: org.jetbrains.kotlin:kotlin-stdlib:1.6.21" level="project" />
-    <orderEntry type="library" name="Maven: org.jetbrains:annotations:13.0" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.13.5" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.13.5" level="project" />
-    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.13.5" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.12.6" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.12.6" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.12.6.1" level="project" />
     <orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk15on:1.69" level="project" />
     <orderEntry type="library" name="Maven: org.apache.commons:commons-compress:1.21" level="project" />
     <orderEntry type="library" name="Maven: org.xerial.snappy:snappy-java:1.1.8.4" level="project" />
@@ -141,10 +140,10 @@
     <orderEntry type="library" name="Maven: org.gavaghan:geodesy:1.1.3" level="project" />
     <orderEntry type="library" name="Maven: com.alibaba:druid-spring-boot-starter:1.2.14" level="project" />
     <orderEntry type="library" name="Maven: com.alibaba:druid:1.2.14" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.7.12" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.5.14" level="project" />
     <orderEntry type="library" name="Maven: com.zaxxer:HikariCP:4.0.3" level="project" />
-    <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.3.27" level="project" />
-    <orderEntry type="library" name="Maven: org.postgresql:postgresql:42.3.8" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.3.20" level="project" />
+    <orderEntry type="library" name="Maven: org.postgresql:postgresql:42.2.25" level="project" />
     <orderEntry type="library" name="Maven: org.checkerframework:checker-qual:3.5.0" level="project" />
   </component>
 </module>
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 4ddcd2e..ec3a63f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-parent</artifactId>
-        <version>2.7.12</version>
+        <version>2.5.14</version>
         <relativePath/> <!-- lookup parent from repository -->
     </parent>
     <groupId>com.ard</groupId>
@@ -90,11 +90,23 @@
             <artifactId>orai18n</artifactId>
             <version>21.1.0.0</version>
         </dependency>
+        <!-- okhttp3-->
+        <dependency>
+            <groupId>com.squareup.okhttp3</groupId>
+            <artifactId>okhttp</artifactId>
+            <version>4.8.1</version>
+        </dependency>
         <!--minio渚濊禆-->
         <dependency>
             <groupId>io.minio</groupId>
             <artifactId>minio</artifactId>
             <version>8.3.5</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>com.squareup.okhttp3</groupId><!--琚帓闄ょ殑jar鍖�-->
+                    <artifactId>okhttp</artifactId>
+                </exclusion>
+            </exclusions>
         </dependency>
         <dependency>
             <groupId>org.apache.commons</groupId>
diff --git a/src/main/java/com/ard/alarm/radar/controller/RadarController.java b/src/main/java/com/ard/alarm/radar/controller/RadarController.java
index f98b87e..cf4c7e4 100644
--- a/src/main/java/com/ard/alarm/radar/controller/RadarController.java
+++ b/src/main/java/com/ard/alarm/radar/controller/RadarController.java
@@ -6,9 +6,10 @@
 import com.ard.utils.http.AjaxResult;
 import com.ard.utils.util.ByteUtils;
 import com.ard.utils.util.GisUtils;
-import com.ard.utils.netty.tcp.ClientInitialize;
+import com.ard.utils.netty.tcp.RadarNettyTcpClient;
 import io.netty.buffer.ByteBuf;
 import io.netty.channel.Channel;
+import io.netty.channel.ChannelFuture;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -43,7 +44,7 @@
         if (ardEquipRadar == null) {
             return AjaxResult.error("闆疯揪涓嶅瓨鍦�");
         }
-        Channel channel = ClientInitialize.SucChannelMap.get(ardEquipRadar.getIp() + ":" + ardEquipRadar.getPort());
+        Channel channel= RadarNettyTcpClient.SERVER_MAP.get(ardEquipRadar.getIp() + ":" + ardEquipRadar.getPort());
         if (channel == null) {
             return AjaxResult.error("闆疯揪鏈繛鎺�");
         }
diff --git a/src/main/java/com/ard/config/AsyncConfiguration.java b/src/main/java/com/ard/config/AsyncConfiguration.java
index 186acc5..c7a0fe2 100644
--- a/src/main/java/com/ard/config/AsyncConfiguration.java
+++ b/src/main/java/com/ard/config/AsyncConfiguration.java
@@ -25,6 +25,27 @@
         //閰嶇疆闃熷垪澶у皬
         executor.setQueueCapacity(1000);
         //绾跨▼鐨勫悕绉板墠缂�
+        executor.setThreadNamePrefix("alarmExecutor-");
+        //绾跨▼娲昏穬鏃堕棿锛堢锛�
+        //executor.setKeepAliveSeconds(60);
+        //绛夊緟鎵�鏈変换鍔$粨鏉熷悗鍐嶅叧闂嚎绋嬫睜
+        executor.setWaitForTasksToCompleteOnShutdown(true);
+        //璁剧疆鎷掔粷绛栫暐
+        //executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
+        //鎵ц鍒濆鍖�
+        executor.initialize();
+        return executor;
+    }
+    @Bean("exec")
+    public ThreadPoolTaskExecutor executor(){
+        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
+        //閰嶇疆鏍稿績绾跨▼鏁�
+        executor.setCorePoolSize(15);
+        //閰嶇疆鏈�澶х嚎绋嬫暟
+        executor.setMaxPoolSize(30);
+        //閰嶇疆闃熷垪澶у皬
+        executor.setQueueCapacity(1000);
+        //绾跨▼鐨勫悕绉板墠缂�
         executor.setThreadNamePrefix("Executor-");
         //绾跨▼娲昏穬鏃堕棿锛堢锛�
         //executor.setKeepAliveSeconds(60);
@@ -36,4 +57,4 @@
         executor.initialize();
         return executor;
     }
-}
\ No newline at end of file
+}
diff --git a/src/main/java/com/ard/utils/netty/tcp/ClientInitialize.java b/src/main/java/com/ard/utils/netty/tcp/ClientInitialize.java
deleted file mode 100644
index cbb3b07..0000000
--- a/src/main/java/com/ard/utils/netty/tcp/ClientInitialize.java
+++ /dev/null
@@ -1,180 +0,0 @@
-package com.ard.utils.netty.tcp;
-
-import com.ard.alarm.radar.domain.ArdEquipRadar;
-import com.ard.alarm.radar.service.IArdEquipRadarService;
-import com.ard.utils.netty.config.NettyTcpConfiguration;
-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;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.boot.ApplicationArguments;
-import org.springframework.boot.ApplicationRunner;
-import org.springframework.core.annotation.Order;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.stereotype.Component;
-
-import javax.annotation.Resource;
-import java.util.*;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.CopyOnWriteArraySet;
-import java.util.function.Consumer;
-
-/**
- * 瀹㈡埛绔垵濮嬪寲
- *
- * @author lijiamin
- */
-@Component
-@Slf4j(topic = "netty")
-@Order(2)
-public class ClientInitialize implements ApplicationRunner {
-    @Resource
-    NettyTcpConfiguration nettyTcpConfig;
-    @Resource
-    IArdEquipRadarService ardEquipRadarService;
-
-    private Bootstrap bootstrap;
-    public static CopyOnWriteArraySet<ArdEquipRadar> falseConnectSet = new CopyOnWriteArraySet();//澶辫触杩炴帴鐨勯浄杈維et
-    public static ConcurrentHashMap<String, ArdEquipRadar> trueConnectMap = new ConcurrentHashMap();//鎴愬姛杩炴帴鐨刬p绔彛瀵瑰簲鐨勯浄杈�
-    public static ConcurrentHashMap<String, MessageHandler> SucMessageHandlerMap = new ConcurrentHashMap();//鎴愬姛杩炴帴鐨刬p绔彛瀵瑰簲鐨勬姤鏂囪В鏋愬櫒
-    public static ConcurrentHashMap<String, Channel> SucChannelMap = new ConcurrentHashMap();//鎴愬姛杩炴帴鐨刬p绔彛瀵瑰簲鐨刵etty閫氶亾
-    public static ConcurrentHashMap<String, Integer> aroundScanfMap = new ConcurrentHashMap();//鏄惁鍚姩鍛ㄨ
-
-    /**
-     * Netty鍒濆鍖栭厤缃�
-     */
-    public void initNettyTcp() {
-        EventLoopGroup eventLoopGroup = new NioEventLoopGroup();
-        bootstrap = new Bootstrap();
-        bootstrap.group(eventLoopGroup)
-                .channel(NioSocketChannel.class)
-                .option(ChannelOption.TCP_NODELAY, true)
-                .option(ChannelOption.SO_KEEPALIVE, true)
-                .handler(new ChannelInitializer<SocketChannel>() {
-                    @Override
-                    protected void initChannel(SocketChannel socketChannel) {
-                        socketChannel.pipeline().addLast(new ClientHandler());
-                    }
-                });
-
-        //寮傛鎸佺画鐩戝惉杩炴帴澶辫触鐨勫湴鍧�
-        CompletableFuture.runAsync(new Runnable() {
-            @Override
-            public void run() {
-                while (true) {
-                    try {
-                        if (falseConnectSet.size() != 0) {
-                            // 寰幆闆嗗悎鍐呭厓绱�
-                            falseConnectSet.forEach(new Consumer<ArdEquipRadar>() {
-                                @Override
-                                public void accept(ArdEquipRadar radar) {
-                                    connectServer(radar);
-                                }
-                            });
-                        }
-                        Thread.sleep(nettyTcpConfig.getReConnectInterval());
-                    } catch (Exception e) {
-                        log.error("Netty鍒濆鍖栭厤缃洃鍚湴鍧�鍑虹幇寮傚父");
-                        e.printStackTrace();
-                    }
-                }
-            }
-        });
-    }
-
-    /**
-     * 鏈嶅姟杩炴帴
-     *
-     * @param ardEquipRadar
-     */
-    public void connectServer(ArdEquipRadar ardEquipRadar) {
-        // 鑾峰彇鍦板潃鍙婄鍙�
-        String host = ardEquipRadar.getIp();
-        Integer port = ardEquipRadar.getPort();
-        String ipPort = host + ":" + port;
-        // 寮傛杩炴帴tcp鏈嶅姟绔�
-        bootstrap.remoteAddress(host, port).connect().addListener((ChannelFuture futureListener) -> {
-            if (futureListener.isSuccess()) {
-                log.debug("闆疯揪銆�" + ipPort + "銆戣繛鎺ユ垚鍔�");
-                // 杩炴帴鎴愬姛淇℃伅浠嶴et鎷旈櫎
-                falseConnectSet.remove(ardEquipRadar);
-                // 杩炴帴鎴愬姛淇℃伅鍐欏叆map
-                trueConnectMap.put(ipPort, ardEquipRadar);
-                SucMessageHandlerMap.put(ipPort, new MessageHandler());
-                SucChannelMap.put(ipPort, futureListener.channel());
-            } else {
-                log.debug("闆疯揪銆�" + ipPort + "銆戣繛鎺ュけ璐�");
-                futureListener.channel().close();
-                // 杩炴帴澶辫触淇℃伅鎻掑叆Set
-                falseConnectSet.add(ardEquipRadar);
-
-            }
-        });
-    }
-
-    /**
-     * 鍒濆鍖栨柟娉�
-     */
-    @Override
-    public void run(ApplicationArguments args) {
-        if (!nettyTcpConfig.getEnabled()) {
-            return;
-        }
-        initNettyTcp();//鍒濆鍖杗ettyTcp
-        List<ArdEquipRadar> ardEquipRadars = ardEquipRadarService.selectArdEquipRadarList(new ArdEquipRadar());
-        for (ArdEquipRadar ardEquipRadar : ardEquipRadars) {
-            String host = ardEquipRadar.getIp();
-            Integer port = Integer.valueOf(ardEquipRadar.getPort());
-            log.debug("TCP client try to connect radar銆�" + host + ":" + port + "銆�");
-            connectServer(ardEquipRadar);//杩炴帴姣忎竴涓浄杈炬湇鍔�
-        }
-    }
-
-    /**
-     * 鐩戞祴闆疯揪杩炴帴鐘舵��
-     */
-    @Scheduled(cron = "0/3 * * * * ?")
-    public void monitorConnectStatus() {
-        log.debug("瀹氭椂鐩戞祴闆疯揪杩炴帴鐘舵��");
-        List<ArdEquipRadar> ardEquipRadars = ardEquipRadarService.selectArdEquipRadarList(new ArdEquipRadar());
-        ardEquipRadars.stream().forEach(ardEquipRadar -> {
-            //鍒ゆ柇涓庨浄杈惧鎴风杩炴帴鐘舵��
-            boolean online = trueConnectMap.containsKey(ardEquipRadar.getIp() + ":" + ardEquipRadar.getPort());
-            if (online) {
-                //杩炴帴闆疯揪瀹㈡埛绔垚鍔� 鍒ゆ柇鍛ㄦ壂鐘舵��
-                if (aroundScanfMap.containsKey(ardEquipRadar.getIp() + ":" + ardEquipRadar.getPort())) {
-                    Integer state = aroundScanfMap.get(ardEquipRadar.getIp() + ":" + ardEquipRadar.getPort());
-                    if (state == 1) {//1-鍛ㄦ壂鎵撳紑-杩炴帴鎴愬姛
-                        if (ardEquipRadar.getState() == null || !ardEquipRadar.getState().equals("1")) {
-                            ardEquipRadar.setState("1");
-                            ardEquipRadarService.updateArdEquipRadar(ardEquipRadar);
-                        }
-                    } else {
-                        if (ardEquipRadar.getState() == null || !ardEquipRadar.getState().equals("2")) {
-                            //2-鍛ㄦ壂鏈紑
-                            ardEquipRadar.setState("2");
-                            ardEquipRadarService.updateArdEquipRadar(ardEquipRadar);
-                        }
-
-                    }
-                } else {
-                    if (ardEquipRadar.getState() == null || !ardEquipRadar.getState().equals("2")) {
-                        //2-鍛ㄦ壂鏈紑
-                        ardEquipRadar.setState("2");
-                        ardEquipRadarService.updateArdEquipRadar(ardEquipRadar);
-                    }
-                }
-            } else {
-                //杩炴帴闆疯揪瀹㈡埛绔け璐�
-                if (ardEquipRadar.getState() == null || !ardEquipRadar.getState().equals("0")) {
-                    //0-瀹㈡埛绔笉閫�
-                    ardEquipRadar.setState("0");
-                    ardEquipRadarService.updateArdEquipRadar(ardEquipRadar);
-                }
-            }
-        });
-    }
-}
diff --git a/src/main/java/com/ard/utils/netty/tcp/NettyInit.java b/src/main/java/com/ard/utils/netty/tcp/NettyInit.java
new file mode 100644
index 0000000..4fde840
--- /dev/null
+++ b/src/main/java/com/ard/utils/netty/tcp/NettyInit.java
@@ -0,0 +1,49 @@
+package com.ard.utils.netty.tcp;
+
+import com.ard.alarm.radar.domain.ArdEquipRadar;
+import com.ard.alarm.radar.service.IArdEquipRadarService;
+import com.ard.utils.netty.config.NettyTcpConfiguration;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import static com.ard.utils.netty.tcp.RadarNettyTcpClient.RADAR_MAP;
+
+@Component
+@Slf4j(topic = "netty")
+public class NettyInit {
+    @Resource
+    NettyTcpConfiguration nettyTcpConfig;
+    @Resource
+    private RadarNettyTcpClient radarNettyTcpClient;
+    @Resource
+    IArdEquipRadarService ardEquipRadarService;
+    @PostConstruct
+    public void createRadarConnect() {
+        try {
+            if (!nettyTcpConfig.getEnabled()) {
+                return;
+            }
+            List<Map<String, Object>> list = new ArrayList<>();
+            List<ArdEquipRadar> ardEquipRadars = ardEquipRadarService.selectArdEquipRadarList(new ArdEquipRadar());
+            for (ArdEquipRadar ardEquipRadar : ardEquipRadars) {
+                String host = ardEquipRadar.getIp();
+                Integer port = Integer.valueOf(ardEquipRadar.getPort());
+                Map<String,Object> mapParam =new HashMap<String, Object>();
+                mapParam.put("IP",host);
+                mapParam.put("PORT",port);
+                list.add(mapParam);
+                RADAR_MAP.put(host+":"+port,ardEquipRadar);
+            }
+            radarNettyTcpClient.initAllChannel(list);
+        }catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+}
diff --git a/src/main/java/com/ard/utils/netty/tcp/RadarNettyTcpClient.java b/src/main/java/com/ard/utils/netty/tcp/RadarNettyTcpClient.java
new file mode 100644
index 0000000..29e9230
--- /dev/null
+++ b/src/main/java/com/ard/utils/netty/tcp/RadarNettyTcpClient.java
@@ -0,0 +1,189 @@
+package com.ard.utils.netty.tcp;
+
+import com.ard.alarm.radar.domain.ArdEquipRadar;
+import com.ard.alarm.radar.service.IArdEquipRadarService;
+import com.ard.utils.netty.tcp.handler.*;
+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;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * 瀹㈡埛绔垵濮嬪寲
+ *
+ * @author lijiamin
+ */
+@Component
+@Slf4j(topic = "netty")
+public class RadarNettyTcpClient {
+
+    @Resource
+    IArdEquipRadarService ardEquipRadarService;
+
+    @Autowired
+    @Qualifier("exec")
+    ThreadPoolTaskExecutor executorService;
+
+    EventLoopGroup eventLoopGroup = new NioEventLoopGroup();
+
+    public static ConcurrentHashMap<String, MessageHandler> SucMessageHandlerMap = new ConcurrentHashMap();//鎴愬姛杩炴帴鐨刬p绔彛瀵瑰簲鐨勬姤鏂囪В鏋愬櫒
+    public static ConcurrentHashMap<String, Integer> aroundScanfMap = new ConcurrentHashMap();//鏄惁鍚姩鍛ㄨ
+    public static final Map<String, Channel> SERVER_MAP = new ConcurrentHashMap();
+    public static final Map<String, ArdEquipRadar> RADAR_MAP = new ConcurrentHashMap();
+
+    /**
+     * 鍒濆鍖栨柟娉�
+     */
+    public void initAllChannel(List<Map<String, Object>> portHosts) {
+        for (Map<String, Object> map : portHosts) {
+            String host = (String) map.get("IP");
+            Integer port = (Integer) map.get("PORT");
+            try {
+                connectServer(host, port);
+            } catch (Exception ex) {
+                log.error(ex.getMessage());
+            }
+        }
+    }
+
+    /**
+     * 鍒濆鍖朆ootstrap
+     * 鍒樿嫃涔�
+     * 2024/3/25 9:53:57
+     */
+    public Bootstrap getBootstrap(EventLoopGroup group) {
+        if (null == group) {
+            group = eventLoopGroup;
+        }
+        Bootstrap bootstrap = new Bootstrap();
+        bootstrap.group(group)
+                .channel(NioSocketChannel.class)
+                .option(ChannelOption.TCP_NODELAY, true)
+                .option(ChannelOption.SO_KEEPALIVE, true)
+                .handler(new ChannelInitializer<SocketChannel>() {
+                    @Override
+                    protected void initChannel(SocketChannel socketChannel) throws Exception {
+                        ChannelPipeline pipeline = socketChannel.pipeline();
+                        pipeline.addLast("handler", new ClientHandler());
+                    }
+                });
+        return bootstrap;
+    }
+
+    /**
+     * 鏈嶅姟杩炴帴
+     * 鍒樿嫃涔�
+     * 2024/3/25 9:52:28
+     */
+    public void connectServer(String host, Integer port) {
+        try {
+            //寮傛杩炴帴tcp鏈嶅姟绔�
+            Bootstrap bootstrap = getBootstrap(null);
+            bootstrap.remoteAddress(host, port);
+            ChannelFuture channelFuture = bootstrap.connect().sync();
+            if (channelFuture.isSuccess()) {
+                log.info("闆疯揪銆�" + host + ":" + port + "銆戣繛鎺ユ垚鍔�");
+                String serverKey = String.format("%s:%d", host, port);
+                SERVER_MAP.put(serverKey, channelFuture.channel());
+                SucMessageHandlerMap.put(serverKey, new MessageHandler());
+            }
+            channelFuture.channel().closeFuture().addListener(new ChannelFutureListener() {
+                public void operationComplete(ChannelFuture future) throws Exception {
+                    String serverKey = String.format("%s:%d", host, port);
+                    SERVER_MAP.remove(serverKey);
+                    //鏈嶅姟绔绾匡紝瑙﹀彂閲嶈繛鎿嶄綔
+                    reconnect(host, port);
+                }
+            });
+        } catch (Exception e) {
+            reconnect(host, port);
+            throw new RuntimeException("闆疯揪銆�" + host + ":" + port + "銆戣繛鎺ュ紓甯�:" + e.getMessage());
+        }
+    }
+
+    /**
+     * 閲嶈繛鏈嶅姟绔�
+     * 鍒樿嫃涔�
+     * 2024/3/25 9:52:15
+     */
+    public void reconnect(final String host, final int port) {
+        log.debug("闆疯揪銆�" + host + ":" + port + "銆戣繛鎺ュけ璐ワ紝杩涜閲嶈繛...");
+        executorService.submit(new Runnable() {
+            public void run() {
+                for (; ; ) {
+                    try {
+                        TimeUnit.SECONDS.sleep(3);
+                        connectServer(host, port);
+                        if (SERVER_MAP.containsKey(String.format("%s:%d", host, port))) {
+                            break;
+                        }
+                    } catch (Exception e) {
+                        log.error(e.getMessage());
+                        break;
+                    }
+                }
+            }
+        });
+    }
+
+    /**
+     * 鐩戞祴闆疯揪杩炴帴鐘舵��
+     */
+    @Scheduled(cron = "0/3 * * * * ?")
+    public void monitorConnectStatus() {
+        try {
+            log.debug("瀹炴椂鐩戞祴闆疯揪杩炴帴鐘舵��...");
+            List<ArdEquipRadar> ardEquipRadars = ardEquipRadarService.selectArdEquipRadarList(new ArdEquipRadar());
+            ardEquipRadars.stream().forEach(ardEquipRadar -> {
+                //鍒ゆ柇涓庨浄杈惧鎴风杩炴帴鐘舵��
+                boolean online = SERVER_MAP.containsKey(ardEquipRadar.getIp() + ":" + ardEquipRadar.getPort());
+                if (online) {
+                    //杩炴帴闆疯揪瀹㈡埛绔垚鍔� 鍒ゆ柇鍛ㄦ壂鐘舵��
+                    if (aroundScanfMap.containsKey(ardEquipRadar.getIp() + ":" + ardEquipRadar.getPort())) {
+                        Integer state = aroundScanfMap.get(ardEquipRadar.getIp() + ":" + ardEquipRadar.getPort());
+                        if (state == 1) {//1-鍛ㄦ壂鎵撳紑-杩炴帴鎴愬姛
+                            if (ardEquipRadar.getState() == null || !ardEquipRadar.getState().equals("1")) {
+                                ardEquipRadar.setState("1");
+                                ardEquipRadarService.updateArdEquipRadar(ardEquipRadar);
+                            }
+                        } else {
+                            if (ardEquipRadar.getState() == null || !ardEquipRadar.getState().equals("2")) {
+                                //2-鍛ㄦ壂鏈紑
+                                ardEquipRadar.setState("2");
+                                ardEquipRadarService.updateArdEquipRadar(ardEquipRadar);
+                            }
+
+                        }
+                    } else {
+                        if (ardEquipRadar.getState() == null || !ardEquipRadar.getState().equals("2")) {
+                            //2-鍛ㄦ壂鏈紑
+                            ardEquipRadar.setState("2");
+                            ardEquipRadarService.updateArdEquipRadar(ardEquipRadar);
+                        }
+                    }
+                } else {
+                    //杩炴帴闆疯揪瀹㈡埛绔け璐�
+                    if (ardEquipRadar.getState() == null || !ardEquipRadar.getState().equals("0")) {
+                        //0-瀹㈡埛绔笉閫�
+                        ardEquipRadar.setState("0");
+                        ardEquipRadarService.updateArdEquipRadar(ardEquipRadar);
+                    }
+                }
+            });
+        } catch (Exception e) {
+            log.error("瀹氭椂鐩戞祴闆疯揪杩炴帴鐘舵�佸紓甯�:" + e.getMessage());
+        }
+    }
+}
diff --git a/src/main/java/com/ard/utils/netty/tcp/ClientHandler.java b/src/main/java/com/ard/utils/netty/tcp/handler/ClientHandler.java
similarity index 94%
rename from src/main/java/com/ard/utils/netty/tcp/ClientHandler.java
rename to src/main/java/com/ard/utils/netty/tcp/handler/ClientHandler.java
index 3b1ed6a..196c5d9 100644
--- a/src/main/java/com/ard/utils/netty/tcp/ClientHandler.java
+++ b/src/main/java/com/ard/utils/netty/tcp/handler/ClientHandler.java
@@ -1,18 +1,18 @@
-package com.ard.utils.netty.tcp;
+package com.ard.utils.netty.tcp.handler;
 
 import com.alibaba.fastjson2.JSON;
 import com.ard.alarm.radar.domain.ArdAlarmRadar;
 import com.ard.alarm.radar.domain.ArdEquipRadar;
 import com.ard.alarm.radar.domain.RadarAlarmData;
+import com.ard.utils.netty.tcp.RadarNettyTcpClient;
 import com.ard.utils.util.ByteUtils;
 import com.ard.utils.util.GisUtils;
 import com.ard.utils.mqtt.MqttProducer;
 import io.netty.buffer.ByteBuf;
-import io.netty.channel.ChannelHandlerContext;
-import io.netty.channel.ChannelId;
-import io.netty.channel.SimpleChannelInboundHandler;
+import io.netty.channel.*;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Component;
 
 import javax.xml.bind.DatatypeConverter;
 import java.net.InetSocketAddress;
@@ -21,7 +21,7 @@
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
 
-import static com.ard.utils.netty.tcp.ClientInitialize.aroundScanfMap;
+import static com.ard.utils.netty.tcp.RadarNettyTcpClient.aroundScanfMap;
 import static com.ard.utils.util.ByteUtils.toLittleEndian;
 
 /**
@@ -31,7 +31,8 @@
  * @Date: 2023骞�07鏈�05鏃�13:13
  * @Version: 1.0
  **/
-
+@Component
+//@ChannelHandler.Sharable
 @Slf4j(topic = "netty")
 public class ClientHandler extends SimpleChannelInboundHandler<ByteBuf> {
     private ChannelHandlerContext context;
@@ -58,18 +59,9 @@
     @Override
     public void channelInactive(ChannelHandlerContext ctx) throws Exception {
         InetSocketAddress ipSocket = (InetSocketAddress) ctx.channel().remoteAddress();
-        String ipPort = ipSocket.getHostString() + ":" + ipSocket.getPort();
-        log.error("涓庤澶�" + ipPort + "杩炴帴鏂紑!");
-        // 杩炴帴鏂紑鍚庣殑鏈�鍚庡鐞�
-        ctx.pipeline().remove(this);
-        ctx.deregister();
-        ctx.close();
-        // 灏嗗け璐ヤ俊鎭彃鍏et闆嗗悎
-        ArdEquipRadar radar = ClientInitialize.trueConnectMap.get(ipPort);
-        if (radar != null) {
-            ClientInitialize.falseConnectSet.add(radar);
-            ClientInitialize.trueConnectMap.remove(ipPort);
-        }
+        String ip = ipSocket.getHostString();
+        int port = ipSocket.getPort();
+        log.error("涓庨浄杈捐澶囥��" + ip + ":" + port + "銆戣繛鎺ユ柇寮�!");
         super.channelInactive(ctx);
     }
 
@@ -85,11 +77,11 @@
     public void channelRead0(ChannelHandlerContext ctx, ByteBuf msg) {
         InetSocketAddress ipSocket = (InetSocketAddress) ctx.channel().remoteAddress();
         String ipPort = ipSocket.getHostString() + ":" + ipSocket.getPort();
-        ArdEquipRadar radar = ClientInitialize.trueConnectMap.get(ipPort);
+        ArdEquipRadar radar = RadarNettyTcpClient.RADAR_MAP.get(ipPort);
         if (radar == null) {
             return;
         }
-        MessageHandler messageHandler = ClientInitialize.SucMessageHandlerMap.get(ipPort);
+        MessageHandler messageHandler = RadarNettyTcpClient.SucMessageHandlerMap.get(ipPort);
         if (messageHandler == null) {
             return;
         }
@@ -218,28 +210,28 @@
                 byte[] dfScanAngV = Arrays.copyOfRange(data, 4, 12);
                 dfScanAngV = toLittleEndian(dfScanAngV);
                 double ScanAngV = ByteUtils.bytesToDouble(dfScanAngV);
-                log.info("璁惧鎵弿鐨勪刊浠拌搴�:" + ScanAngV);
+                //log.info("璁惧鎵弿鐨勪刊浠拌搴�:" + ScanAngV);
 
                 byte[] dfAngDy = Arrays.copyOfRange(data, 12, 20);
                 dfAngDy = toLittleEndian(dfAngDy);
                 double AngDy = ByteUtils.bytesToDouble(dfAngDy);
-                log.info("鍛ㄨ鍥惧儚鐨勫瀭鐩磋鍦鸿搴�:" + AngDy);
+                //log.info("鍛ㄨ鍥惧儚鐨勫瀭鐩磋鍦鸿搴�:" + AngDy);
 
                 byte[] iImgW = Arrays.copyOfRange(data, 20, 24);
                 iImgW = toLittleEndian(iImgW);
                 int ImgW = ByteUtils.bytesToDecimal(iImgW);
-                log.info("鍛ㄨ鍥惧儚鐨勫:" + ImgW);
+                //log.info("鍛ㄨ鍥惧儚鐨勫:" + ImgW);
                 byte[] iImgH = Arrays.copyOfRange(data, 24, 28);
                 iImgH = toLittleEndian(iImgH);
                 int ImgH = ByteUtils.bytesToDecimal(iImgH);
-                log.info("鍛ㄨ鍥惧儚鐨勯珮:" + ImgH);
+                //log.info("鍛ㄨ鍥惧儚鐨勯珮:" + ImgH);
 
                 byte[] cStat = Arrays.copyOfRange(data, 28, 29);
                 // 鎻愬彇绗�4浣嶈嚦绗�6浣嶇殑鍊�
                 cStat = toLittleEndian(cStat);
                 int Stat = cStat[0] & 0b00000001;
                 log.info("璁惧褰撳墠宸ヤ綔鐘舵��:" + Stat);
-                aroundScanfMap.put(radar.getIp()+":"+radar.getPort(),Stat);
+                aroundScanfMap.put(radar.getIp() + ":" + radar.getPort(), Stat);
 
             }
             //闆疯揪绉诲姩闃茬伀鎶ヨ
diff --git a/src/main/java/com/ard/utils/netty/tcp/MessageHandler.java b/src/main/java/com/ard/utils/netty/tcp/handler/MessageHandler.java
similarity index 92%
rename from src/main/java/com/ard/utils/netty/tcp/MessageHandler.java
rename to src/main/java/com/ard/utils/netty/tcp/handler/MessageHandler.java
index e6286fb..31f7b9b 100644
--- a/src/main/java/com/ard/utils/netty/tcp/MessageHandler.java
+++ b/src/main/java/com/ard/utils/netty/tcp/handler/MessageHandler.java
@@ -1,4 +1,4 @@
-package com.ard.utils.netty.tcp;
+package com.ard.utils.netty.tcp.handler;
 
 import com.ard.utils.util.ByteUtils;
 
@@ -57,15 +57,16 @@
         int crcLength = 4;//crc鏍¢獙4涓瓧鑺�
         //鍘绘帀鍖呭ご鍖呭熬
         byte[] payloadCrc32 = ByteUtils.removeHeaderAndFooter(packet, headerLength, footerLength);
-        //System.out.println(DatatypeConverter.printHexBinary(payloadCrc32));
+        System.out.println(DatatypeConverter.printHexBinary(payloadCrc32));
         //鑾峰彇鍒版暟鎹惡甯︾殑crc32鍊�
         byte[] oldCrc32 = ByteUtils.getLastBytes(payloadCrc32, crcLength);
+        System.out.println(DatatypeConverter.printHexBinary(oldCrc32));
         //鍘绘帀鍖呭ご鍖呭熬crc32瀛楄妭锛屼粎淇濈暀璐熻浇
         byte[] payload = ByteUtils.removeHeaderFooterAndCRC(packet, headerLength, footerLength, crcLength);
-       // System.out.println(DatatypeConverter.printHexBinary(payload));
+        System.out.println(DatatypeConverter.printHexBinary(payload));
         //璁$畻璐熻浇鐨刢rc32鍊�
         byte[] NewCrc32 = ByteUtils.parseCrc32(payload);
-
+        System.out.println(DatatypeConverter.printHexBinary(NewCrc32));
         //鍒ゆ柇鏁版嵁鐨刢rc32鏍¢獙鍊煎拰璁$畻鍊兼槸鍚︾浉鍚�
         if (Arrays.equals(oldCrc32, NewCrc32)) {
             return true;

--
Gitblit v1.9.3