From 0606c7af3b023b1d8b719c5c063cf738a7a05086 Mon Sep 17 00:00:00 2001 From: Jesper Saastamoinen Date: Fri, 13 Dec 2024 15:08:54 +0100 Subject: [PATCH] Updated and removed while loop in SocketServer --- .../froj/stdlib/socket/ClientHandler.java | 5 +-- .../froj/stdlib/socket/SocketServer.java | 39 +++++++++---------- src/com/jsaasta/tool/SocketClient.java | 3 ++ 3 files changed, 22 insertions(+), 25 deletions(-) diff --git a/src/com/jsaasta/froj/stdlib/socket/ClientHandler.java b/src/com/jsaasta/froj/stdlib/socket/ClientHandler.java index a671887..6ebeb28 100644 --- a/src/com/jsaasta/froj/stdlib/socket/ClientHandler.java +++ b/src/com/jsaasta/froj/stdlib/socket/ClientHandler.java @@ -1,8 +1,6 @@ package com.jsaasta.froj.stdlib.socket; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; +import java.io.*; import java.net.Socket; class ClientHandler implements Runnable { @@ -26,7 +24,6 @@ class ClientHandler implements Runnable { String message = new String(buffer, 0, bytesRead); System.out.println("Received message from client: " + message); - out.write(message.getBytes()); SocketServer.messageQueue.put(message); diff --git a/src/com/jsaasta/froj/stdlib/socket/SocketServer.java b/src/com/jsaasta/froj/stdlib/socket/SocketServer.java index f6dbd0d..79e5a24 100644 --- a/src/com/jsaasta/froj/stdlib/socket/SocketServer.java +++ b/src/com/jsaasta/froj/stdlib/socket/SocketServer.java @@ -28,29 +28,26 @@ public class SocketServer implements FrojCallable { final int PORT = param.intValue(); serverSocket = new ServerSocket(PORT); - while (true) { - Socket socket = serverSocket.accept(); - System.out.println("Incoming connection from " + socket.getInetAddress()); - ClientHandler clientHandler = new ClientHandler(socket); - clientHandler.run(); - String nextMessage = getNextMessage(); - if(nextMessage.toLowerCase().contentEquals("exit")){ - shutdown(); - break; - } - try{ - return Double.parseDouble(nextMessage); - } catch (NumberFormatException e) { - return nextMessage; - } + Socket socket = serverSocket.accept(); + System.out.println("Incoming connection from " + socket.getInetAddress()); + + ClientHandler clientHandler = new ClientHandler(socket); + clientHandler.run(); + String nextMessage = getNextMessage(); + if (nextMessage.toLowerCase().contentEquals("exit")) { + shutdown(); + return EXIT_CODE; } - return EXIT_CODE; - } catch (IOException e) { - throw new RuntimeException(e.getMessage()); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } finally{ + try { + return Double.parseDouble(nextMessage); + } catch (NumberFormatException e) { + return nextMessage; + } + + } catch (IOException | InterruptedException e) { + throw new StdlibRuntimeError(e.getMessage()); + } finally { shutdown(); } } diff --git a/src/com/jsaasta/tool/SocketClient.java b/src/com/jsaasta/tool/SocketClient.java index 7bb3475..6884bda 100644 --- a/src/com/jsaasta/tool/SocketClient.java +++ b/src/com/jsaasta/tool/SocketClient.java @@ -12,6 +12,9 @@ class SocketClient { BufferedReader reader = new BufferedReader(input); String message = reader.readLine(); + if(message.contentEquals("SHUTMEDOWN")){ + break; + } String response = sendMessage(message); if (response != null) { System.out.println("Received response from server: " + response);