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