‘liusuyi’
2023-12-28 dfdc6bdfda10de4c01fb1cfe43cabf050e71f8c3
优化雷达tcp客户端
已修改7个文件
50 ■■■■ 文件已修改
src/main/java/com/ard/utils/netty/tcp/BootNettyChannelInboundHandlerAdapter.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/netty/tcp/BootNettyClient.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/netty/tcp/ClientHandler.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/netty/tcp/ClientInitialize.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/netty/tcp/DynamicClient.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/netty/tcp/DynamicClientHandler.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/utils/netty/tcp/MessageParsing.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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);
            //}
        }
    }
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;
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);
        }
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;
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
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
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};
        // 添加已接收的数据到缓冲区