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