From a8a90fd2d5040e66cc66b3da122a7f82561ff6f6 Mon Sep 17 00:00:00 2001
From: 826220679@qq.com <826220679@qq.com>
Date: 星期六, 09 八月 2025 23:32:29 +0800
Subject: [PATCH] 优化了欢迎页面

---
 src/udptcp/UDPPortAReceiver.java |  198 +++++++++++++++++++++++++------------------------
 1 files changed, 101 insertions(+), 97 deletions(-)

diff --git a/src/udptcp/UDPPortAReceiver.java b/src/udptcp/UDPPortAReceiver.java
index a72e207..fea5a80 100644
--- a/src/udptcp/UDPPortAReceiver.java
+++ b/src/udptcp/UDPPortAReceiver.java
@@ -7,106 +7,110 @@
 import java.util.concurrent.atomic.AtomicLong;
 
 import dell_system.MessageViewPanel;
+import dell_targets.Dell_SystemConfiguration;
 
 public class UDPPortAReceiver {
-    public static final int PORT = 8234;
-    @SuppressWarnings("unused")
+	public static final int PORT =Dell_SystemConfiguration.hexport;
+	@SuppressWarnings("unused")
 	private static final int MAX_DEVICES = 50000;
-    private static final AtomicLong packetCount = new AtomicLong(0);
-    private static final ExecutorService executor = Executors.newFixedThreadPool(10);
-    private static DatagramSocket socket;
-    private static volatile boolean isRunning = false;
-    private static Thread receiverThread;
-    @SuppressWarnings("unused")
+	private static final AtomicLong packetCount = new AtomicLong(0);
+	private static final ExecutorService executor = Executors.newFixedThreadPool(10);
+	private static DatagramSocket socket;
+	private static volatile boolean isRunning = false;
+	private static Thread receiverThread;
+	@SuppressWarnings("unused")
 	private static final int LOCAL_PORT = PORT; // 定义本地端口
-    // 启动接收器的静态方法
-    public static void startReceiver() {
-        if (isRunning) return;        
-        isRunning = true;
-        receiverThread = new Thread(() -> {
-            try {
-                socket = new DatagramSocket(PORT);
-                byte[] buffer = new byte[2048];                
-                while (isRunning) {
-                    DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
-                    socket.receive(packet);                    
-                    executor.execute(() -> {
-                        try {
-                            String ip = packet.getAddress().getHostAddress();
-                            int port = packet.getPort();
-                            String hexData = bytesToHex(packet.getData(), packet.getLength());
-                            // 调用时添加本地端口参数
-                            PacketProcessingSystem.storePacket(ip, port, hexData);                            
-                           // 报文查看窗口显示数据
-                            MessageViewPanel.showData(hexData, ip, port, PORT,"1");
-                            
-                        } catch (Exception e) {
-                            System.err.println("Error processing UDP-A packet: " + e.getMessage());
-                        }
-                    });
-                }
-            } catch (Exception e) {
-                System.err.println("UDP-A Server crashed: " + e.getMessage());
-            } finally {
-                if (socket != null && !socket.isClosed()) {
-                    socket.close();
-                }
-            }
-        });
-        receiverThread.setDaemon(true);
-        receiverThread.start();
-    }
-    
-    // 停止接收器
-    public static void stopReceiver() {
-        isRunning = false;
-        if (socket != null && !socket.isClosed()) {
-            socket.close();
-        }
-        executor.shutdown();
-    }
-    
-    // 发送数据到指定设备
-    public static void sendData(String ip, int port, String data, boolean isHex) {
-        try {
-            byte[] sendBytes;
-            if (isHex) {
-                // HEX格式发送:将十六进制字符串转换为字节数组
-                sendBytes = hexStringToByteArray(data);
-            } else {
-                // ASCII格式发送:直接获取字节数组
-                sendBytes = data.getBytes();
-            }
-            
-            InetAddress address = InetAddress.getByName(ip);
-            DatagramPacket packet = new DatagramPacket(sendBytes, sendBytes.length, address, port);
-            socket.send(packet);
-        } catch (Exception e) {
-            System.err.println("Error sending UDP data: " + e.getMessage());
-        }
-    }
-    
-    private static String bytesToHex(byte[] bytes, int length) {
-        StringBuilder sb = new StringBuilder();
-        for (int i = 0; i < length; i++) {
-            sb.append(String.format("%02X", bytes[i]));
-        }
-        return sb.toString();
-    }
-    
-    private static byte[] hexStringToByteArray(String hex) {
-        hex = hex.replaceAll("\\s", ""); // 移除所有空格
-        int len = hex.length();
-        byte[] data = new byte[len / 2];
-        for (int i = 0; i < len; i += 2) {
-            // 处理每两个字符作为一个字节
-            data[i / 2] = (byte) ((Character.digit(hex.charAt(i), 16) << 4)
-                                 + Character.digit(hex.charAt(i+1), 16));
-        }
-        return data;
-    }
+	// 启动接收器的静态方法
+	public static void startReceiver() {
+		if (isRunning) return;        
+		isRunning = true;
+		receiverThread = new Thread(() -> {
+			try {
+				socket = new DatagramSocket(PORT);
+				byte[] buffer = new byte[2048];                
+				while (isRunning) {
+					DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
+					socket.receive(packet);                    
+					executor.execute(() -> {
+						try {
+							String ip = packet.getAddress().getHostAddress();
+							int port = packet.getPort();
+							String hexData = bytesToHex(packet.getData(), packet.getLength());
+							// 调用时添加本地端口参数
+							PacketProcessingSystem.storePacket(ip, port, hexData);                            
+							// 报文查看窗口显示数据
+							MessageViewPanel.showData(hexData, ip, port, PORT,"1");
+							// +++ 增加包计数 +++
+							packetCount.incrementAndGet();  // 关键修复:增加计数器  
+						} catch (Exception e) {
+							System.err.println("Error processing UDP-A packet: " + e.getMessage());
+						}
+					});
+				}
+			} catch (Exception e) {
+				System.err.println("UDP-A Server crashed: " + e.getMessage());
+			} finally {
+				if (socket != null && !socket.isClosed()) {
+					socket.close();
+				}
+			}
+		});
+		receiverThread.setDaemon(true);
+		receiverThread.start();
+	}
 
-    public static long getPacketCount() {
-        return packetCount.get();
-    }
+	// 停止接收器
+	public static void stopReceiver() {
+		isRunning = false;
+		if (socket != null && !socket.isClosed()) {
+			socket.close();
+		}
+		executor.shutdown();
+	}
+
+	// 发送数据到指定设备
+	public static void sendData(String ip, int port, String data, boolean isHex) {
+		try {
+			byte[] sendBytes;
+			if (isHex) {
+				// HEX格式发送:将十六进制字符串转换为字节数组
+				sendBytes = hexStringToByteArray(data);
+			} else {
+				// ASCII格式发送:直接获取字节数组
+				sendBytes = data.getBytes();
+			}
+
+			InetAddress address = InetAddress.getByName(ip);
+			DatagramPacket packet = new DatagramPacket(sendBytes, sendBytes.length, address, port);
+			socket.send(packet);
+		} catch (Exception e) {
+			System.err.println("Error sending UDP data: " + e.getMessage());
+		}
+	}
+
+	private static String bytesToHex(byte[] bytes, int length) {
+		StringBuilder sb = new StringBuilder();
+		for (int i = 0; i < length; i++) {
+			sb.append(String.format("%02X", bytes[i]));
+		}
+		return sb.toString();
+	}
+
+	private static byte[] hexStringToByteArray(String hex) {
+		hex = hex.replaceAll("\\s", ""); // 移除所有空格
+		int len = hex.length();
+		byte[] data = new byte[len / 2];
+		for (int i = 0; i < len; i += 2) {
+			// 处理每两个字符作为一个字节
+			data[i / 2] = (byte) ((Character.digit(hex.charAt(i), 16) << 4)
+					+ Character.digit(hex.charAt(i+1), 16));
+		}
+		return data;
+	}
+
+	// 获取接收到的数据包总数
+	public static long getPacketCount() {
+		return packetCount.get();
+	}
+
 }
\ No newline at end of file

--
Gitblit v1.9.3