diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Multiplayer/TestServer/Client.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Multiplayer/Client.java similarity index 81% rename from src/main/java/de/hdm_stuttgart/battlearena/Model/Multiplayer/TestServer/Client.java rename to src/main/java/de/hdm_stuttgart/battlearena/Model/Multiplayer/Client.java index d85b3389b5174fcb919ebc36f067f4d65354b0c4..257727888dd87f2b73cbc1a873e6a61e95d494df 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Model/Multiplayer/TestServer/Client.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Multiplayer/Client.java @@ -1,6 +1,5 @@ -package de.hdm_stuttgart.battlearena.Model.Multiplayer.TestServer; +package de.hdm_stuttgart.battlearena.Model.Multiplayer; -import de.hdm_stuttgart.battlearena.Model.Multiplayer.ConnectionHandler; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -13,7 +12,7 @@ public class Client { private PrintWriter out; private BufferedReader in; - private static final Logger log = LogManager.getLogger(ConnectionHandler.class); + private static final Logger log = LogManager.getLogger(Client.class); public void startConnection(String ip, int port) throws IOException { clientSocket = new Socket(ip, port); diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Multiplayer/ConnectionHandler.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Multiplayer/ConnectionHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..4bffdb53fe7a5b5ebe711db5fbb84522b7ebace3 --- /dev/null +++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Multiplayer/ConnectionHandler.java @@ -0,0 +1,57 @@ +package de.hdm_stuttgart.battlearena.Model.Multiplayer; + +import java.io.IOException; + +public class ConnectionHandler { + + private int pX; + private int pY; + private int enemyX; + private int enemyY; + + private static int[] coordinates = {5,10}; + + public static void main(String[] args) throws IOException, InterruptedException { + + Client client = new Client(); + client.startConnection("localhost", 4444); + int[] cords = client.sendcords(coordinates); + System.out.println(cords); + + //stop the connection: + client.stopConnection(); + } + + public int getpX() { + return pX; + } + + public void setpX(int pX) { + this.pX = pX; + } + + public int getpY() { + return pY; + } + + public void setpY(int pY) { + this.pY = pY; + } + + public int getEnemyX() { + return enemyX; + } + + public void setEnemyX(int enemyX) { + this.enemyX = enemyX; + } + + public int getEnemyY() { + return enemyY; + } + + public void setEnemyY(int enemyY) { + this.enemyY = enemyY; + } +} + diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Multiplayer/TestServer/Server.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Multiplayer/Server.java similarity index 67% rename from src/main/java/de/hdm_stuttgart/battlearena/Model/Multiplayer/TestServer/Server.java rename to src/main/java/de/hdm_stuttgart/battlearena/Model/Multiplayer/Server.java index 378a1f00a20ba00e1d46e7aff38ff5f8115da149..709568662113522a5588d644af0dd5acb457a54c 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Model/Multiplayer/TestServer/Server.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Multiplayer/Server.java @@ -1,12 +1,10 @@ -package de.hdm_stuttgart.battlearena.Model.Multiplayer.TestServer; +package de.hdm_stuttgart.battlearena.Model.Multiplayer; -import de.hdm_stuttgart.battlearena.Model.Multiplayer.GameServer; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import java.net.*; import java.io.*; -import java.util.Arrays; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; @@ -15,9 +13,13 @@ public class Server { private static final Logger log = LogManager.getLogger(Server.class); private ServerSocket serverSocket; + private static boolean isServerRunning = true; private static int px; private static int py; + private static int enemyx; + private static int enemyy; + private static int[] cords; public static void main(String[] args) throws IOException { @@ -29,16 +31,9 @@ public class Server { public void start(String lolcalhost, int port) throws IOException { serverSocket = new ServerSocket(port); log.info("server started!"); - while (true) - new ServerHandler(serverSocket.accept()).start(); - } - - public void stop() throws IOException { - serverSocket.close(); + new ServerHandler(serverSocket.accept()).start(); } - // EchoClientHandler class in the Server - private static class ServerHandler extends Thread { private Socket clientSocket; private PrintWriter out; @@ -71,6 +66,18 @@ public class Server { log.info(cords); + //check if server was shut down: + if (!isServerRunning) { + executorService.shutdown(); + try { + if (!executorService.awaitTermination(5, TimeUnit.SECONDS)) { + executorService.shutdownNow(); + } + } catch (InterruptedException e) { + log.error("Error waiting for executor service termination: " + e.getMessage()); + } + } + } catch (IOException e) { throw new RuntimeException(e); } @@ -78,4 +85,13 @@ public class Server { } } + public void stopServer() { + isServerRunning = false; + try { + serverSocket.close(); // Close the server socket to break out of accept() in the main thread + } catch (IOException e) { + log.error("Error closing server socket: " + e.getMessage()); + } + } + } diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/Multiplayer/TestServer/ConnectionHandling.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/Multiplayer/TestServer/ConnectionHandling.java deleted file mode 100644 index e11381ac638e4b7271dbd6a5d57b327c8a18c88c..0000000000000000000000000000000000000000 --- a/src/main/java/de/hdm_stuttgart/battlearena/Model/Multiplayer/TestServer/ConnectionHandling.java +++ /dev/null @@ -1,30 +0,0 @@ -package de.hdm_stuttgart.battlearena.Model.Multiplayer.TestServer; - -import java.io.IOException; -import java.lang.reflect.Array; -import java.util.concurrent.TimeUnit; - -public class ConnectionHandling { - - private int px; - - private int py; - - private static int[] coordinates = {5,10}; - - public static void main(String[] args) throws IOException, InterruptedException { - Client client = new Client(); - client.startConnection("localhost", 4444); - int[] cords = client.sendcords(coordinates); - System.out.println(cords); - } - - public int getPx() { - return px; - } - - public int getPy() { - return py; - } -} -