diff --git a/src/praktikum04/SorterClient.java b/src/praktikum04/SorterClient.java new file mode 100644 index 0000000..086d6e6 --- /dev/null +++ b/src/praktikum04/SorterClient.java @@ -0,0 +1,54 @@ +package praktikum04; + + +import javax.sound.sampled.Port; +import java.io.*; +import java.net.*; +import java.util.Scanner; + +public class SorterClient { + + public static void main(String[] args) { + SorterClient client = new SorterClient(); + client.run(); + } + + private void run() { + Scanner scanner = new Scanner(System.in); + while (scanner.hasNextLine()) { + String line = scanner.nextLine(); + if (line.isEmpty()) + break; + line = sort(line); + System.out.println(line); + } + scanner.close(); + } + + private String sort(String line) { + InetSocketAddress address = + new InetSocketAddress("localhost", 12345); + try (Socket socket = new Socket()) { + socket.connect(address); + sendLine(socket, line); + String answer = receiveLine(socket); + return answer; + } catch (Exception e) { + System.err.println("Error: " + e.getMessage()); + } + return "*"; + } + + public static void sendLine(Socket socket, String line) throws IOException { + OutputStream out = socket.getOutputStream(); + PrintWriter writer = new PrintWriter(out); + writer.println(line); + writer.flush(); + } + + public static String receiveLine(Socket socket) throws IOException { + InputStream in = socket.getInputStream(); + BufferedReader reader = new BufferedReader(new InputStreamReader(in)); + return reader.readLine(); + } +} diff --git a/src/praktikum04/SorterServer.java b/src/praktikum04/SorterServer.java new file mode 100644 index 0000000..fd3823b --- /dev/null +++ b/src/praktikum04/SorterServer.java @@ -0,0 +1,60 @@ +package praktikum04; + +import java.io.*; +import java.net.*; +import java.util.Arrays; + +public class SorterServer implements Runnable { + public static void main(String[] args) { + + final int port = 12345; + try (ServerSocket socket = new ServerSocket(port)) { + while (true) { + Socket client = socket.accept(); + Thread thread = new Thread(new SorterServer(client)); + thread.start(); + } + } + catch (Exception e) { + System.err.println("Error: " + e.getMessage()); + } + } + + Socket client; + + private SorterServer(Socket client) { + this.client = client; + } + + public void run() { + try { + String line = receiveLine(client); + char[] chars = line.toCharArray(); + Arrays.sort(chars); + String answer = new String(chars); + sendLine(client, answer); + System.out.println(line + " -> " + answer); + } + catch (Exception e) { + System.err.println("Error: " + e.getMessage()); + } + finally { + try { client.close(); } catch (Exception e) {} + } + } + + public static void sendLine(Socket socket, String line) throws IOException { + OutputStream out = socket.getOutputStream(); + PrintWriter writer = new PrintWriter(out); + writer.println(line); + writer.flush(); + } + + public static String receiveLine(Socket socket) throws IOException { + InputStream in = socket.getInputStream(); + BufferedReader reader = new BufferedReader(new InputStreamReader(in)); + return reader.readLine(); + } + + +}