From fb883547ede83b1c758b1a9a025898ba3f83497a Mon Sep 17 00:00:00 2001 From: 826220679@qq.com <826220679@qq.com> Date: 星期日, 10 八月 2025 23:05:19 +0800 Subject: [PATCH] 新增 --- src/udptcp/PacketProcessingSystem.java | 37 ++++++++++++++++++++++++++++++------- 1 files changed, 30 insertions(+), 7 deletions(-) diff --git a/src/udptcp/PacketProcessingSystem.java b/src/udptcp/PacketProcessingSystem.java index 9ab4b4d..7a31faf 100644 --- a/src/udptcp/PacketProcessingSystem.java +++ b/src/udptcp/PacketProcessingSystem.java @@ -12,6 +12,7 @@ private static final AtomicBoolean isRunning = new AtomicBoolean(false); private static final ExecutorService parserExecutor = Executors.newSingleThreadExecutor(); private static Thread parserThread; + private static boolean a1=true; // 报文存储结构 public static class HexPacket { @@ -26,10 +27,30 @@ this.hexData = hexData; this.timestamp = timestamp; } + + public String getIp() { + return ip; + } + + public int getPort() { + return port; + } + + public String getHexData() { + return hexData; + } + + public long getTimestamp() { + return timestamp; + } } // 接收端存储报文(UDPPortAReceiver中调用) public static void storePacket(String ip, int port, String hexData) { + if(a1) { + startProcessing(); + a1=false; + } if (packetQueue.size() < 100000) { // 限制队列大小防止OOM packetQueue.offer(new HexPacket(ip, port, hexData, System.currentTimeMillis())); } @@ -52,7 +73,9 @@ try { // 转换HEX为字节数据 - byte[] rawData = PacketParser.hexStringToBytes(packet.hexData); + byte[] rawData = PacketParser.hexStringToBytes(packet.hexData); + String ip=packet.getIp(); + int port=packet.getPort(); // 追加到缓冲区并解析 bufferManager.appendData(rawData, rawData.length); List<PacketParser.DataPacket> parsedPackets = bufferManager.parsePackets(); @@ -62,9 +85,9 @@ // 根据包头类型路由到不同解析器 switch (p.getPacketType()) { case 0x01: - processType01(p);break; + processType01(p,ip,port);break; case 0x02: - processType02(p);break; + processType02(p,ip,port);break; default: System.err.println("未知包类型: " + p.getPacketType()); @@ -90,12 +113,12 @@ } // 示例解析方法(需根据实际协议实现) - private static void processType01(PacketParser.DataPacket packet) { - String hexData = PacketParser.bytesToHexString(packet.getPacket()); - Dell55AA01Parser.parse(hexData); + private static void processType01(PacketParser.DataPacket packet,String ip,int port) { + String hexData = PacketParser.bytesToHexString(packet.getPacket()); + Dell55AA01Parser.parse(hexData,ip,port); } - private static void processType02(PacketParser.DataPacket packet) { + private static void processType02(PacketParser.DataPacket packet,String ip,int port) { System.out.println("处理55AA02包: " + packet); // 实际业务逻辑 } -- Gitblit v1.9.3