From 1bda9524add969e315d870f284046ecf1097f956 Mon Sep 17 00:00:00 2001 From: 826220679@qq.com <826220679@qq.com> Date: 星期日, 24 八月 2025 18:01:25 +0800 Subject: [PATCH] 修改 --- src/udptcp/UDPPortAReceiver.java | 37 +++++++++++++++++++++++++++---------- 1 files changed, 27 insertions(+), 10 deletions(-) diff --git a/src/udptcp/UDPPortAReceiver.java b/src/udptcp/UDPPortAReceiver.java index fea5a80..6739b3f 100644 --- a/src/udptcp/UDPPortAReceiver.java +++ b/src/udptcp/UDPPortAReceiver.java @@ -8,6 +8,7 @@ import dell_system.MessageViewPanel; import dell_targets.Dell_SystemConfiguration; +import publicsWay.PacketProcessingSystem; public class UDPPortAReceiver { public static final int PORT =Dell_SystemConfiguration.hexport; @@ -33,17 +34,32 @@ socket.receive(packet); executor.execute(() -> { try { - String ip = packet.getAddress().getHostAddress(); - int port = packet.getPort(); - String hexData = bytesToHex(packet.getData(), packet.getLength()); + InetAddress address = packet.getAddress(); + if (address == null) { + System.err.println("Received packet with null address"); + return; + } + + String ip = address.getHostAddress(); + int port = packet.getPort(); + byte[] packetData = packet.getData(); + int length = packet.getLength(); + + if (packetData == null || length <= 0) { + System.err.println("Invalid packet data"); + return; + } + + String hexData = bytesToHex(packetData, length); // 调用时添加本地端口参数 PacketProcessingSystem.storePacket(ip, port, hexData); // 报文查看窗口显示数据 - MessageViewPanel.showData(hexData, ip, port, PORT,"1"); + MessageViewPanel.showData(hexData, ip, port, PORT,"UDPA","ALL","ALL"); // +++ 增加包计数 +++ packetCount.incrementAndGet(); // 关键修复:增加计数器 } catch (Exception e) { - System.err.println("Error processing UDP-A packet: " + e.getMessage()); + System.err.println("Error processing UDP-A packet: "); + e.printStackTrace(); // 添加详细堆栈跟踪 } }); } @@ -89,11 +105,12 @@ } 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(); + if (bytes == null || length <= 0) return ""; + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < length && i < bytes.length; i++) { + sb.append(String.format("%02X", bytes[i] & 0xFF)); + } + return sb.toString(); } private static byte[] hexStringToByteArray(String hex) { -- Gitblit v1.9.3