diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/Client.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/Client.java index 8844233..d87dbeb 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/Client.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/Client.java @@ -102,7 +102,8 @@ public class Client { public void closeEverything(Socket socket, BufferedReader in, BufferedWriter out) { //TODO Correctly closing a clients connection - //TODO the server should be notified in a way so he can handle it cleanly + + // Is this not already correct? try { if (in != null) { in.close(); diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/Server.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/Server.java index 31b72ba..195eb4a 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/Server.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/Server.java @@ -27,6 +27,12 @@ public class Server { connectedClients.add(nextClient); th.start(); + // close socket + remove client if client is disconnected + if (socket.getInputStream().read() == -1) { + System.out.println("client disconnected. closing socket"); + socket.close(); + connectedClients.remove(nextClient); + } } } catch (IOException e) { e.printStackTrace();