package org.pixelgaffer.turnierserver.codr.simulator; import java.io.IOException; import java.net.InetAddress; import java.net.ServerSocket; import java.net.Socket; import lombok.NonNull; import org.pixelgaffer.turnierserver.codr.utilities.ErrorLog; /** * Diese Klasse ist ein Server für KIs und die Entsprechung für den Worker. */ public class CodrAiServer extends Thread { private CodrGameImpl game; private ServerSocket server; public CodrAiServer (@NonNull CodrGameImpl gameImpl) throws IOException { super("CodrAiServer"); game = gameImpl; server = new ServerSocket(0, 0, InetAddress.getLoopbackAddress()); // Port 0 heißt dass irgendein Port benutzt wird } @Override public void run () { while (!server.isClosed()) { try { Socket s = server.accept(); if (!s.getInetAddress().equals(InetAddress.getLoopbackAddress())) { ErrorLog.write(s.getInetAddress() + " hat sich mit dem lokalen AiServer verbunden. Verbindung getötet."); s.close(); } else { CodrAiServerConnectionHandler handler = new CodrAiServerConnectionHandler(game, s); handler.start(); } } catch (Exception e) { ErrorLog.write("Fehler in der CodrAiServer-Loop: " + e); e.printStackTrace(); } } } public int getPort () { return server.getLocalPort(); } }