PacketMirror/src/main/java/tech/nevets/packetmirror/UDPServer.java
2024-07-26 14:23:40 -04:00

50 lines
1.5 KiB
Java

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();
}
}