package tech.nevets.packetmirror; import javax.swing.*; import java.io.IOException; import java.net.*; public class UDPServer implements PServer { private DatagramSocket s; private boolean running = true; public UDPServer(int port) throws SocketException { s = new DatagramSocket(port); } @Override public void start(JTextArea textArea, JLabel statusLabel, JLabel errorLabel) { new Thread(() -> { while (running) { try { byte[] buf = new byte[1024]; DatagramPacket packet = new DatagramPacket(buf, buf.length); s.receive(packet); InetAddress address = packet.getAddress(); int port = packet.getPort(); packet = new DatagramPacket(buf, packet.getLength(), address, port); textArea.setText(new String(packet.getData(), 0, packet.getLength())); s.send(packet); } catch (IOException e) { if (e.getMessage().toLowerCase().equals("socket closed")) { statusLabel.setText("Client disconnected"); return; } statusLabel.setText("Error udpserver"); errorLabel.setText(e.getMessage()); e.printStackTrace(); } } }).start(); } @Override public void stop() { running = false; s.close(); } }