From dfdc6bdfda10de4c01fb1cfe43cabf050e71f8c3 Mon Sep 17 00:00:00 2001 From: ‘liusuyi’ <1951119284@qq.com> Date: 星期四, 28 十二月 2023 14:50:54 +0800 Subject: [PATCH] 优化雷达tcp客户端 --- src/main/java/com/ard/utils/netty/tcp/DynamicClient.java | 2 +- src/main/java/com/ard/utils/netty/tcp/BootNettyChannelInboundHandlerAdapter.java | 20 +++++++++++--------- src/main/java/com/ard/utils/netty/tcp/ClientInitialize.java | 6 ++++-- src/main/java/com/ard/utils/netty/tcp/ClientHandler.java | 3 ++- src/main/java/com/ard/utils/netty/tcp/MessageParsing.java | 4 ++-- src/main/java/com/ard/utils/netty/tcp/BootNettyClient.java | 3 +-- src/main/java/com/ard/utils/netty/tcp/DynamicClientHandler.java | 12 ++++++------ 7 files changed, 27 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/ard/utils/netty/tcp/BootNettyChannelInboundHandlerAdapter.java b/src/main/java/com/ard/utils/netty/tcp/BootNettyChannelInboundHandlerAdapter.java index 561d287..5e49218 100644 --- a/src/main/java/com/ard/utils/netty/tcp/BootNettyChannelInboundHandlerAdapter.java +++ b/src/main/java/com/ard/utils/netty/tcp/BootNettyChannelInboundHandlerAdapter.java @@ -10,6 +10,7 @@ import io.netty.buffer.ByteBuf; import io.netty.buffer.EmptyByteBuf; import io.netty.channel.*; +import io.netty.util.CharsetUtil; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -33,17 +34,18 @@ InetSocketAddress inSocket = (InetSocketAddress) ctx.channel().remoteAddress(); String host = inSocket.getAddress().getHostAddress(); int port = inSocket.getPort(); + //log.info("鏀跺埌鏉ヨ嚜 {}:{} 鐨勬暟鎹畕}", host, port,msg.toString(CharsetUtil.UTF_8)); ArdEquipRadar ardEquipRadar = BootNettyClientChannelCache.getRadar(host + ":" + port); if (ardEquipRadar != null) { - // 鍒涘缓缂撳啿涓瓧鑺傛暟鐨勫瓧鑺傛暟缁� - byte[] byteArray = new byte[msg.readableBytes()]; - // 鍐欏叆鏁扮粍 - msg.readBytes(byteArray); - // 澶勭悊鎺ユ敹鍒扮殑娑堟伅 - byte[] bytes = MessageParsing.receiveCompletePacket(byteArray); - if (bytes != null) { - processData(ardEquipRadar, bytes); - } + //// 鍒涘缓缂撳啿涓瓧鑺傛暟鐨勫瓧鑺傛暟缁� + //byte[] byteArray = new byte[msg.readableBytes()]; + //// 鍐欏叆鏁扮粍 + //msg.readBytes(byteArray); + //// 澶勭悊鎺ユ敹鍒扮殑娑堟伅 + //byte[] bytes = MessageParsing.receiveCompletePacket(byteArray); + //if (bytes != null) { + // processData(ardEquipRadar, bytes); + //} } } diff --git a/src/main/java/com/ard/utils/netty/tcp/BootNettyClient.java b/src/main/java/com/ard/utils/netty/tcp/BootNettyClient.java index da103a6..6a44e88 100644 --- a/src/main/java/com/ard/utils/netty/tcp/BootNettyClient.java +++ b/src/main/java/com/ard/utils/netty/tcp/BootNettyClient.java @@ -18,7 +18,7 @@ @Slf4j(topic = "netty") @Component -public class BootNettyClient implements ApplicationRunner { +public class BootNettyClient { @Resource IArdEquipRadarService ardEquipRadarService; @Resource @@ -94,7 +94,6 @@ /** * 鍒濆鍖栨柟娉� */ - @Override public void run(ApplicationArguments args) { if (!nettyTcpConfig.getEnabled()) { return; diff --git a/src/main/java/com/ard/utils/netty/tcp/ClientHandler.java b/src/main/java/com/ard/utils/netty/tcp/ClientHandler.java index 4d22142..c59dd32 100644 --- a/src/main/java/com/ard/utils/netty/tcp/ClientHandler.java +++ b/src/main/java/com/ard/utils/netty/tcp/ClientHandler.java @@ -88,10 +88,11 @@ int port = ipSocket.getPort(); String host = ipSocket.getHostString(); ArdEquipRadar ardEquipRadar = ClientInitialize.tureConnectMap.get(host+":"+port); + MessageParsing messageParsing = ClientInitialize.MessageMap.get(host + ":" + port); // 澶勭悊鎺ユ敹鍒扮殑娑堟伅 byte[] byteArray = new byte[msg.readableBytes()]; msg.getBytes(msg.readerIndex(), byteArray); - byte[] bytes = MessageParsing.receiveCompletePacket(byteArray); + byte[] bytes = messageParsing.receiveCompletePacket(byteArray); if (bytes != null) { processData(ardEquipRadar, bytes); } diff --git a/src/main/java/com/ard/utils/netty/tcp/ClientInitialize.java b/src/main/java/com/ard/utils/netty/tcp/ClientInitialize.java index cf9ef9a..ddd4f9c 100644 --- a/src/main/java/com/ard/utils/netty/tcp/ClientInitialize.java +++ b/src/main/java/com/ard/utils/netty/tcp/ClientInitialize.java @@ -37,7 +37,7 @@ @Component @Slf4j(topic = "netty") @Order(2) -public class ClientInitialize { +public class ClientInitialize implements ApplicationRunner{ @Resource NettyTcpConfiguration nettyTcpConfig; @Resource @@ -47,6 +47,7 @@ public static CopyOnWriteArraySet<ArdEquipRadar> falseConnectSet = new CopyOnWriteArraySet(); public static ConcurrentHashMap<String, ArdEquipRadar> tureConnectMap = new ConcurrentHashMap(); public static ConcurrentHashMap<String, Object> SuccessConnectMap = new ConcurrentHashMap(); + public static ConcurrentHashMap<String, MessageParsing> MessageMap = new ConcurrentHashMap(); /** * Netty鍒濆鍖栭厤缃� */ @@ -114,6 +115,7 @@ falseConnectSet.remove(ardEquipRadar); // 杩炴帴鎴愬姛淇℃伅鍐欏叆map tureConnectMap.put(host+":"+port, ardEquipRadar); + MessageMap.put(host+":"+port,new MessageParsing()); SuccessConnectMap.put(ardEquipRadar.getId(),futureListener.channel()); } }); @@ -122,7 +124,7 @@ /** * 鍒濆鍖栨柟娉� */ - // @Override + @Override public void run(ApplicationArguments args) { if (!nettyTcpConfig.getEnabled()) { return; diff --git a/src/main/java/com/ard/utils/netty/tcp/DynamicClient.java b/src/main/java/com/ard/utils/netty/tcp/DynamicClient.java index 8d88675..82dfcdc 100644 --- a/src/main/java/com/ard/utils/netty/tcp/DynamicClient.java +++ b/src/main/java/com/ard/utils/netty/tcp/DynamicClient.java @@ -27,7 +27,7 @@ **/ @Slf4j(topic = "netty") @Component -public class DynamicClient { +public class DynamicClient{ @Resource IArdEquipRadarService ardEquipRadarService; @Resource diff --git a/src/main/java/com/ard/utils/netty/tcp/DynamicClientHandler.java b/src/main/java/com/ard/utils/netty/tcp/DynamicClientHandler.java index 5eb32a1..1809740 100644 --- a/src/main/java/com/ard/utils/netty/tcp/DynamicClientHandler.java +++ b/src/main/java/com/ard/utils/netty/tcp/DynamicClientHandler.java @@ -47,12 +47,12 @@ Channel channel = ctx.channel(); ArdEquipRadar ardEquipRadar = DynamicClient.ConnectMap.get(channel); // 澶勭悊鎺ユ敹鍒扮殑娑堟伅 - byte[] byteArray = new byte[msg.readableBytes()]; - msg.getBytes(msg.readerIndex(), byteArray); - byte[] bytes = MessageParsing.receiveCompletePacket(byteArray); - if (bytes != null) { - processData(ardEquipRadar, bytes); - } + //byte[] byteArray = new byte[msg.readableBytes()]; + //msg.getBytes(msg.readerIndex(), byteArray); + //byte[] bytes = messageParsing.receiveCompletePacket(byteArray); + //if (bytes != null) { + // processData(ardEquipRadar, bytes); + //} } @Override diff --git a/src/main/java/com/ard/utils/netty/tcp/MessageParsing.java b/src/main/java/com/ard/utils/netty/tcp/MessageParsing.java index 5326d47..4aac19d 100644 --- a/src/main/java/com/ard/utils/netty/tcp/MessageParsing.java +++ b/src/main/java/com/ard/utils/netty/tcp/MessageParsing.java @@ -16,12 +16,12 @@ **/ public class MessageParsing { // 鍒涘缓缂撳啿鍖哄垪琛� - private static List<Byte> buffer = new ArrayList<>(); + private List<Byte> buffer = new ArrayList<>(); /** * 鎺ユ敹瀹屾暣鍖� */ - public static byte[] receiveCompletePacket(byte[] receivedData) { + public byte[] receiveCompletePacket(byte[] receivedData) { // 瀹氫箟鍖呭熬瀛楄妭搴忓垪 byte[] packetEnd = {0x01, 0x02, 0x00}; // 娣诲姞宸叉帴鏀剁殑鏁版嵁鍒扮紦鍐插尯 -- Gitblit v1.9.3