| | |
| | | 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(); // 添加详细堆栈跟踪 |
| | | } |
| | | }); |
| | | } |
| | |
| | | } |
| | | |
| | | 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(); |
| | | 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) { |