diff --git a/src/UE22_200525_MatheServer/MatheClient.java b/src/UE22_200525_MatheServer/MatheClient.java new file mode 100644 index 0000000..45dfa8f --- /dev/null +++ b/src/UE22_200525_MatheServer/MatheClient.java @@ -0,0 +1,121 @@ +package UE22_200525_MatheServer; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.InputStreamReader; +import java.io.OutputStreamWriter; +import java.net.Socket; + +public class MatheClient extends Thread { + Socket client; + private int anzCals = 10; + private int level = 1; + + public MatheClient(Socket s) { + client = s; + } + + public static int randomInRange(int min, int max) { + return (int) (Math.random() * (max - min)) + min; + } + + @Override + public void run() { + try (BufferedReader br = new BufferedReader(new InputStreamReader(client.getInputStream())); BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(client.getOutputStream()))) { + wr.write("Willkommen beim Mathe-Quiz\n\rWie heftig hättest du es gerne?"); + wr.flush(); + while (true) { + int level; + wr.write("\n\rBitte gibt eine Zahl zwischen 1 und 3 ein. (Leer für 1): "); + wr.flush(); + try { + String input = br.readLine(); + if (input == null || input.trim().isEmpty()) break; + level = Integer.parseInt(input); + } catch (Exception _) { + continue; + } + if (level < 1 || level > 3) continue; + this.level = level; + break; + } + while (true) { + int anz; + wr.write("\n\rWie viele Fragen meochtest du loesen (1 - 999) (Leer für 10): "); + wr.flush(); + try { + String input = br.readLine(); + if (input == null || input.trim().isEmpty()) break; + anz = Integer.parseInt(input); + } catch (Exception _) { + continue; + } + if (anz < 1 || anz > 999) continue; + this.anzCals = anz; + break; + } + for (int i = 1; i <= anzCals; i++) { + int type = randomInRange(1, 4), solution, a, b; + String operator; + switch (level) { + case 1 -> { + a = randomInRange(1, 10); + b = randomInRange(1, 10); + } + case 2 -> { + a = randomInRange(-100, 100); + b = randomInRange(-100, 100); + } + case 3 -> { + a = randomInRange(-10_000, 10_000); + b = randomInRange(-10_000, 10_000); + } + default -> throw new IllegalStateException("Unexpected value: " + level); + } + switch (type) { + case 1 -> { + operator = " + "; + solution = a + b; + } + case 2 -> { + operator = " - "; + solution = a - b; + } + case 3 -> { + operator = " * "; + solution = a * b; + } + case 4 -> { + operator = " / "; + solution = a / (b == 0 ? 1 : b); + } + default -> throw new IllegalStateException("Unexpected value: " + type); + } + String question = "(Level " + level + ") Frage " + i + ": " + a + operator + b + " = "; + wr.write(question); + wr.flush(); + while (true) { + String message = "\n\rFalsch :( .. versuche es noch einmal\n\n\r" + question; + try { + String input = br.readLine(); + if (input == null || input.trim().isEmpty() || Integer.parseInt(input) != solution) { + wr.write(message); + wr.flush(); + continue; + } + } catch (Exception _) { + wr.write(message); + wr.flush(); + continue; + } + wr.write("\n\rrichtig :)\n\n\r"); + wr.flush(); + break; + } + } + wr.write("\n\n\n\rHerzlichen Glückwunsch du hast es geschafft!!\n\n\rENDE"); + wr.flush(); + } catch (Exception _) { + } + } +} \ No newline at end of file diff --git a/src/UE22_200525_MatheServer/MatheServer.java b/src/UE22_200525_MatheServer/MatheServer.java new file mode 100644 index 0000000..ddcdcc4 --- /dev/null +++ b/src/UE22_200525_MatheServer/MatheServer.java @@ -0,0 +1,18 @@ +package UE22_200525_MatheServer; + +import java.io.IOException; +import java.net.ServerSocket; +import java.net.Socket; + +public class MatheServer { + public static void main(String[] args) { + try (ServerSocket server = new ServerSocket(1000)) { + while (true) { + System.out.println("Ready to connect"); + Socket client = server.accept(); + new MatheClient(client).start(); + } + } catch (IOException _) { + } + } +} diff --git a/src/UE22_200525_MatheServer/SEW3 UE22 2024 MatheServer.pdf b/src/UE22_200525_MatheServer/SEW3 UE22 2024 MatheServer.pdf new file mode 100644 index 0000000..89af984 Binary files /dev/null and b/src/UE22_200525_MatheServer/SEW3 UE22 2024 MatheServer.pdf differ diff --git a/src/UE22_200525_MatheServer/TCPServer/ClientHandler.java b/src/UE22_200525_MatheServer/TCPServer/ClientHandler.java new file mode 100644 index 0000000..952f97c --- /dev/null +++ b/src/UE22_200525_MatheServer/TCPServer/ClientHandler.java @@ -0,0 +1,50 @@ +package UE22_200525_MatheServer.TCPServer; + +import java.io.*; +import java.net.Socket; + +public class ClientHandler extends Thread { + + Socket client; + + public ClientHandler(Socket s) { + client = s; + } + + @Override + public void run() { + try ( + BufferedReader br = new BufferedReader(new InputStreamReader(client.getInputStream())); + BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(client.getOutputStream())) + ) { + System.out.println("connected to " + client.getRemoteSocketAddress()); + + + while (true) { + wr.write("Bitte rufen\n\r"); + wr.flush(); + + String answer = br.readLine(); + + if (answer == null || answer.trim().isEmpty()) { + break; + } + + for (int i = 0; i < 5; i++) { + wr.write(answer + "\r\n"); + wr.flush(); + + try { + Thread.sleep(2000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + + } + } catch (IOException io) { + io.printStackTrace(); + } + + } +} diff --git a/src/UE22_200525_MatheServer/TCPServer/TCPServer1.java b/src/UE22_200525_MatheServer/TCPServer/TCPServer1.java new file mode 100644 index 0000000..0c0c23b --- /dev/null +++ b/src/UE22_200525_MatheServer/TCPServer/TCPServer1.java @@ -0,0 +1,33 @@ +package THServer; + +import java.awt.image.ImagingOpException; +import java.io.*; +import java.net.ServerSocket; +import java.net.Socket; + +public class TCPServer1 { + public static void main(String[] args) { + + try (ServerSocket server = new ServerSocket(22333)) + { + System.out.println("ready to connect"); + Socket client = server.accept(); + System.out.println("connected to " + client.getRemoteSocketAddress()); + + BufferedReader br = new BufferedReader(new InputStreamReader(client.getInputStream())); + BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(client.getOutputStream())); + + wr.write("Herzlich Willkommen, ihr Name ?\n\r"); + wr.flush(); + String answer = br.readLine(); + System.out.println(answer); + + br.close(); + wr.close(); + } + catch (IOException io) { + io.printStackTrace(); + } + + } +} diff --git a/src/UE22_200525_MatheServer/TCPServer/TCPServer2.java b/src/UE22_200525_MatheServer/TCPServer/TCPServer2.java new file mode 100644 index 0000000..5decd05 --- /dev/null +++ b/src/UE22_200525_MatheServer/TCPServer/TCPServer2.java @@ -0,0 +1,55 @@ +package UE22_200525_MatheServer.TCPServer; + +import java.io.*; +import java.net.ServerSocket; +import java.net.Socket; + +public class TCPServer2 { + public static void main(String[] args) { + + try (ServerSocket server = new ServerSocket(22333)) { + while (true) { + System.out.println("ready to connect"); + + + + try (Socket client = server.accept(); + BufferedReader br = new BufferedReader(new InputStreamReader(client.getInputStream())); + BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(client.getOutputStream())) + ) { + System.out.println("connected to " + client.getRemoteSocketAddress()); + + + while (true) { + wr.write("Bitte rufen\n\r"); + wr.flush(); + + String answer = br.readLine(); + + if (answer == null || answer.trim().isEmpty()) { + break; + } + + for (int i = 0; i < 5; i++) { + wr.write(answer); + wr.flush(); + + try { + Thread.sleep(2000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + + } + } catch (IOException io) { + io.printStackTrace(); + } + + + } + } catch (IOException io) { + io.printStackTrace(); + } + } +} diff --git a/src/UE22_200525_MatheServer/TCPServer/TCPServer3.java b/src/UE22_200525_MatheServer/TCPServer/TCPServer3.java new file mode 100644 index 0000000..86c7544 --- /dev/null +++ b/src/UE22_200525_MatheServer/TCPServer/TCPServer3.java @@ -0,0 +1,25 @@ +package UE22_200525_MatheServer.TCPServer; + +import java.io.IOException; +import java.net.ServerSocket; +import java.net.Socket; + +public class TCPServer3 { + public static void main(String[] args) { + + try (ServerSocket server = new ServerSocket(22333)) { + while (true) { + System.out.println("ready to connect"); + + + Socket client = server.accept(); + + new ClientHandler(client).start(); + + + } + } catch (IOException io) { + io.printStackTrace(); + } + } +}