import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.Arrays; public class DistributedSorterServer implements Runnable { private final Socket clientSocket; // Konstruktor public DistributedSorterServer(Socket clientSocket) { this.clientSocket = clientSocket; } public static void main(String[] args) { final int port = 12345; try (ServerSocket serverSocket = new ServerSocket(port)) { System.out.println("Distributed Sorter Server is running on port " + port); while (true) { // Warten auf neue Verbindung Socket client = serverSocket.accept(); System.out.println("New client connected: " + client.getInetAddress()); // Neuen Thread starten, um die Client-Anfrage zu bearbeiten Thread thread = new Thread(new DistributedSorterServer(client)); thread.start(); } } catch (Exception e) { System.err.println("Error: " + e.getMessage()); } } @Override public void run() { try ( BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true) ) { String inputLine; // Verarbeite alle Nachrichten vom Client while ((inputLine = in.readLine()) != null) { System.out.println("Received: " + inputLine); // Sortiere die Buchstaben im String String sortedLine = sortCharacters(inputLine); System.out.println(inputLine + " -> " + sortedLine); // Antwort zurück an den Client senden out.println(sortedLine); } } catch (Exception e) { System.err.println("Error handling client: " + e.getMessage()); } finally { try { clientSocket.close(); System.out.println("Client disconnected."); } catch (Exception e) { System.err.println("Error closing client socket: " + e.getMessage()); } } } // Sortiermethode für die Zeichen im String private String sortCharacters(String input) { char[] chars = input.toCharArray(); Arrays.sort(chars); return new String(chars); } }