From 3e141a913a4805ff3b22403e644b2f1517e68c80 Mon Sep 17 00:00:00 2001
From: Tobias Jordine <jordine@hdm-stuttgart.de>
Date: Thu, 26 May 2022 17:18:00 +0200
Subject: [PATCH] added client server demo

---
 src/main/java/EchoServer.java  | 44 +++++++++++++++++++++++++++++++
 src/main/java/GreetClient.java | 47 ++++++++++++++++++++++++++++++++++
 2 files changed, 91 insertions(+)
 create mode 100644 src/main/java/EchoServer.java
 create mode 100644 src/main/java/GreetClient.java

diff --git a/src/main/java/EchoServer.java b/src/main/java/EchoServer.java
new file mode 100644
index 0000000..0cd7922
--- /dev/null
+++ b/src/main/java/EchoServer.java
@@ -0,0 +1,44 @@
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.PrintWriter;
+import java.net.ServerSocket;
+import java.net.Socket;
+
+// Adapted from https://www.baeldung.com/a-guide-to-java-sockets
+public class EchoServer {
+
+    private ServerSocket serverSocket;
+    private Socket clientSocket;
+    private PrintWriter out;
+    private BufferedReader in;
+
+    public void start(int port) throws IOException {
+        serverSocket = new ServerSocket(port);
+        clientSocket = serverSocket.accept();
+        out = new PrintWriter(clientSocket.getOutputStream(), true);
+        in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
+
+        String inputLine;
+        while ((inputLine = in.readLine()) != null) {
+            if (".".equals(inputLine)) {
+                out.println("good bye");
+                break;
+            }
+            out.println(inputLine.toUpperCase());
+        }
+    }
+
+    public void stop() throws IOException {
+        in.close();
+        out.close();
+        clientSocket.close();
+        serverSocket.close();
+    }
+
+    public static void main(String[] args) throws IOException {
+        EchoServer server=new EchoServer();
+        server.start(9191);
+    }
+
+}
diff --git a/src/main/java/GreetClient.java b/src/main/java/GreetClient.java
new file mode 100644
index 0000000..f3c76ce
--- /dev/null
+++ b/src/main/java/GreetClient.java
@@ -0,0 +1,47 @@
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.PrintWriter;
+import java.net.Socket;
+import java.util.Scanner;
+
+public class GreetClient {
+    private Socket clientSocket;
+    private PrintWriter out;
+    private BufferedReader in;
+
+    public void startConnection(String ip, int port) throws IOException {
+        clientSocket = new Socket(ip, port);
+        out = new PrintWriter(clientSocket.getOutputStream(), true);
+        in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
+    }
+
+    public String sendMessage(String msg) throws IOException {
+        out.println(msg);
+        String resp = in.readLine();
+        return resp;
+    }
+
+    public void stopConnection() throws IOException {
+        in.close();
+        out.close();
+        clientSocket.close();
+    }
+
+    public static void main(String[] args) throws IOException {
+        GreetClient client = new GreetClient();
+        Scanner in = new Scanner(System.in);
+        client.startConnection("127.0.0.1", 9191);
+        while (true){
+            String text = in.nextLine();
+            String response = client.sendMessage(text);
+            System.out.println("Server Response: " + response);
+
+            if (text.equals(".")){
+                break;
+            }
+        }
+
+        client.stopConnection();
+    }
+}
\ No newline at end of file
-- 
GitLab