58 lines
1.9 KiB
Java
58 lines
1.9 KiB
Java
package vs;
|
|
|
|
import java.io.IOException;
|
|
import java.net.DatagramPacket;
|
|
import java.net.DatagramSocket;
|
|
import java.util.concurrent.ExecutorService;
|
|
import java.util.concurrent.Executors;
|
|
|
|
|
|
public class Server {
|
|
private static final int BUFFSIZE = 512; //? Maybe andere Größe
|
|
private static final ExecutorService executor = Executors.newFixedThreadPool(2);
|
|
|
|
public interface PacketHandler {
|
|
void handlePacket(DatagramSocket socket, DatagramPacket packet, String serviceName);
|
|
}
|
|
|
|
public static void main(String[] args) {
|
|
startSocket(new DiscoveryHandler(), 8888, "Discovery Service");
|
|
startSocket(new SyslogHandler(), 8887, "Logging Service"); //? Port geraten idk
|
|
}
|
|
|
|
private static void startSocket(PacketHandler handler, int port, String serviceName) {
|
|
executor.execute(() -> {
|
|
try (DatagramSocket socket = new DatagramSocket(port)) {
|
|
DatagramPacket packetIn = new DatagramPacket(new byte[BUFFSIZE], BUFFSIZE); //? Nicht sicher ob die Arguments richtig sind
|
|
|
|
System.out.println(serviceName + " listening on port " + port);
|
|
|
|
while (true) {
|
|
socket.receive(packetIn);
|
|
|
|
handler.handlePacket(socket, packetIn, serviceName);
|
|
}
|
|
} catch (IOException e) {
|
|
//? Maybe besseres Error handling
|
|
System.err.println(serviceName + " error: " + e.getMessage());
|
|
}
|
|
});
|
|
}
|
|
|
|
|
|
static class SyslogHandler implements PacketHandler {
|
|
@Override
|
|
public void handlePacket(DatagramSocket socket, DatagramPacket packet, String serviceName) {
|
|
|
|
}
|
|
}
|
|
|
|
static class DiscoveryHandler implements PacketHandler {
|
|
@Override
|
|
public void handlePacket(DatagramSocket socket, DatagramPacket packet, String serviceName) {
|
|
|
|
}
|
|
}
|
|
}
|
|
|