VS-LogServer/vs.pu01/vs.pu01/src/main/java/vs/Server.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) {
}
}
}