From b0926cd91651c158a3a1c070f9b6d2d8ce877cfe Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: Tue, 26 Mar 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();//失败连接的雷达Set
- public static ConcurrentHashMap<String, ArdEquipRadar> trueConnectMap = new ConcurrentHashMap();//成功连接的ip端口对应的雷达
- public static ConcurrentHashMap<String, MessageHandler> SucMessageHandlerMap = new ConcurrentHashMap();//成功连接的ip端口对应的报文解析器
- public static ConcurrentHashMap<String, Channel> SucChannelMap = new ConcurrentHashMap();//成功连接的ip端口对应的netty通道
- 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 + "】连接成功");
- // 连接成功信息从Set拔除
- 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();//初始化nettyTcp
- 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();//成功连接的ip端口对应的报文解析器
+ 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());
+ }
+ }
+ }
+
+ /**
+ * 初始化Bootstrap
+ * 刘苏义
+ * 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();
- // 将失败信息插入Set集合
- 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));
//计算负载的crc32值
byte[] NewCrc32 = ByteUtils.parseCrc32(payload);
-
+ System.out.println(DatatypeConverter.printHexBinary(NewCrc32));
//判断数据的crc32校验值和计算值是否相同
if (Arrays.equals(oldCrc32, NewCrc32)) {
return true;
--
Gitblit v1.9.3