| | |
| | | import java.net.DatagramPacket; |
| | | import java.net.DatagramSocket; |
| | | import java.net.InetAddress; |
| | | import java.nio.charset.StandardCharsets; |
| | | import java.util.concurrent.ExecutorService; |
| | | import java.util.concurrent.Executors; |
| | | import java.util.concurrent.atomic.AtomicLong; |
| | | |
| | | import publicsWay.PacketProcessingSystem; |
| | | import dell_system.MessageViewPanel; |
| | | import dell_targets.Dell_SystemConfiguration; |
| | | import publicsWay.PacketProcessingSystemB; |
| | | |
| | | public class UDPPortBReceiver { |
| | | public static final int PORT = 7000; |
| | | public static final int PORT =Dell_SystemConfiguration.ascallport; |
| | | @SuppressWarnings("unused") |
| | | private static final int MAX_DEVICES = 50000; |
| | | private static final AtomicLong packetCount = new AtomicLong(0); |
| | |
| | | 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()); |
| | | //String hexData = bytesToHex(packet.getData(), packet.getLength()); |
| | | String asciiData = new String(packet.getData(), 0, packet.getLength(), StandardCharsets.US_ASCII); |
| | | // 去掉回车和换行 |
| | | asciiData = asciiData.replaceAll("\r", "").replaceAll("\n", ""); |
| | | // 调用时添加本地端口参数 |
| | | PacketProcessingSystem.storePacket(ip, port, hexData); |
| | | PacketProcessingSystemB.storePacket(ip, port, asciiData); |
| | | // 报文查看窗口显示数据 |
| | | MessageViewPanel.showData(asciiData, ip, port, PORT,"UDPB","ALL","ALL"); |
| | | packetCount.incrementAndGet(); // 关键修复:增加计数器 |
| | | |
| | | } catch (Exception e) { |
| | | System.err.println("Error processing UDP-A packet: " + e.getMessage()); |
| | | System.err.println("Error processing UDP-B packet: " + e.getMessage()); |
| | | } |
| | | }); |
| | | } |
| | | } catch (Exception e) { |
| | | System.err.println("UDP-A Server crashed: " + e.getMessage()); |
| | | System.err.println("UDP-B Server crashed: " + e.getMessage()); |
| | | } finally { |
| | | if (socket != null && !socket.isClosed()) { |
| | | socket.close(); |
| | |
| | | } 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) { |