From d3eda6174a9bdf21033bbbec05d5c44b9b50d43b Mon Sep 17 00:00:00 2001 From: Elrabu <busch.elias@web.de> Date: Sat, 25 Nov 2023 15:35:45 +0100 Subject: [PATCH] Update: Server keeps running, all errors caught. --- .../Model/Multiplayer/TestServer/Client.java | 3 +- .../TestServer/ConnectionHandling.java | 4 -- .../Model/Multiplayer/TestServer/Server.java | 56 +++++++++---------- 3 files changed, 27 insertions(+), 36 deletions(-) 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/TestServer/Client.java index 60f17430..a13d436d 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Model/Multiplayer/TestServer/Client.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Multiplayer/TestServer/Client.java @@ -22,8 +22,7 @@ public class Client { public String sendMessage(String msg) throws IOException { out.println(msg); - String resp = in.readLine(); - return resp; + return in.readLine(); } public void stopConnection() throws IOException { 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 index 804c6fef..88030299 100644 --- 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 @@ -10,9 +10,5 @@ public class ConnectionHandling { String resp1 = client.sendMessage("hello"); System.out.println(resp1); - Client client1 = new Client(); - client1.startConnection("localhost", 4444); - String resp2 = client1.sendMessage("hello"); - System.out.println(resp2); } } 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/TestServer/Server.java index 1ebd2d28..6d82c603 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Model/Multiplayer/TestServer/Server.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/Multiplayer/TestServer/Server.java @@ -25,6 +25,8 @@ public class Server { serverSocket.close(); } + // EchoClientHandler class in the Server + private static class EchoClientHandler extends Thread { private Socket clientSocket; private PrintWriter out; @@ -37,49 +39,43 @@ public class Server { public void run() { try { out = new PrintWriter(clientSocket.getOutputStream(), true); - } catch (IOException e) { - throw new RuntimeException(e); - } - try { - in = new BufferedReader( - new InputStreamReader(clientSocket.getInputStream())); - } catch (IOException e) { - throw new RuntimeException(e); - } + in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); - String inputLine; + String inputLine; - try { - while ((inputLine = in.readLine()) != null) { + while (clientSocket.isConnected() && (inputLine = in.readLine()) != null) { System.out.println("Received message from client: " + inputLine); - try { - if ((inputLine = in.readLine()) == null) break; - } catch (IOException e) { - throw new RuntimeException(e); - } + if (".".equals(inputLine)) { out.println("bye"); + out.flush(); + System.out.println("Sent response to client: bye"); break; } + out.println(inputLine); out.flush(); + System.out.println("Sent response to client: " + inputLine); } + } catch (SocketException e) { + // Connection reset by client; no need to print a stack trace + System.out.println("Client connection reset."); } catch (IOException e) { - throw new RuntimeException(e); + // Other IOExceptions - log or handle as needed + e.printStackTrace(); + } finally { + try { + in.close(); + out.close(); + clientSocket.close(); + } catch (IOException e) { + // Log the exception or handle as appropriate for your application + e.printStackTrace(); + } } + } - try { - in.close(); - } catch (IOException e) { - throw new RuntimeException(e); - } - out.close(); - try { - clientSocket.close(); - } catch (IOException e) { - throw new RuntimeException(e); - } - } } + } -- GitLab