From ad151110969597897369120d69655793676fafe9 Mon Sep 17 00:00:00 2001 From: philipp023_ <Philipp.Lachowski@tu-dortmund.de> Date: Sat, 10 Dec 2022 17:25:58 +0100 Subject: [PATCH] Ich checke nicht, warum der In und Output nicht funktioniert. Vlt switche ich runter von Bufferedreadern und Writern --- .../src/heimaufgaben/Client.java | 94 +++++-------------- .../src/heimaufgaben/Main.java | 2 +- .../src/heimaufgaben/Server.java | 65 ++++++++++++- 3 files changed, 82 insertions(+), 79 deletions(-) diff --git a/AufgabenStuff/ClientAnwendung/src/heimaufgaben/Client.java b/AufgabenStuff/ClientAnwendung/src/heimaufgaben/Client.java index d8f6e1e..da4c0fe 100644 --- a/AufgabenStuff/ClientAnwendung/src/heimaufgaben/Client.java +++ b/AufgabenStuff/ClientAnwendung/src/heimaufgaben/Client.java @@ -10,7 +10,8 @@ import java.text.*; public class Client { private BufferedWriter zumServer; private BufferedReader vomServer; - public Client() throws IOException{ + + public Client() throws IOException { // Lokale Variablen (Nach Konstruktor nicht mehr nötig) String ip = ""; @@ -25,7 +26,7 @@ public class Client { String portFragezeichen = info.readLine(); // Port ist vorerst String // Port muss vom String zum Int werden: - try{ + try { port = Integer.parseInt(portFragezeichen); } catch (NumberFormatException e) { // Falls er keine Zahl ist System.err.println("Der Port ist keine Zahl!"); @@ -33,14 +34,13 @@ public class Client { } // Wenn falsche IP oder port eingegeben wird: - if(!ip.equals("127.0.0.1")){ - if(!ip.equals("localhost")) - { + if (!ip.equals("127.0.0.1")) { + if (!ip.equals("localhost")) { System.err.println("Falsche IP!"); return; } } - if(port != 2022){ + if (port != 2022) { System.err.println("Falscher Port!"); return; } @@ -63,77 +63,25 @@ public class Client { } // Eingaben werden aufgenommen und bearbeitet bis "close": - System.out.println("Verbindung hergestellt, erwarte Auftrag:"); - while(clientSocket.isConnected()) - { + System.out.println("Verbindung hergestellt. erwarte Auftrag:"); + while (clientSocket.isConnected()) { String eingabe = info.readLine(); - if(eingabe.equalsIgnoreCase("close")){ + zumServer.write(eingabe); // Alles wird an den Server geschickt + String ausgabe = vomServer.readLine(); // Ausgabe vom Server wird verglichen + if (ausgabe.equals("EXIT")) { clientSocket.close(); info.close(); - break; - } - else if(eingabe.equalsIgnoreCase("ping")){ - ping(); - } - else if(eingabe.substring(0,4).equalsIgnoreCase("echo")){ - echo(eingabe); + } else if (ausgabe.equals("PONG")) { + System.out.println(ausgabe); + } else if (ausgabe.substring(0, 4).equals("ECHO")) { + System.out.println(ausgabe.substring(5)); + } else if (ausgabe.substring(0, 4).equals("TIME")) { + System.out.println(ausgabe.substring(5)); + } else if (ausgabe.substring(0, 4).equals("DATE")) { + System.out.println(ausgabe.substring(5)); + } else if (ausgabe.substring(0, 5).equals("ERROR")) { + System.out.println(ausgabe.substring(6)); } - else if(eingabe.equalsIgnoreCase("current time")){ - time(); - } - else if(eingabe.equalsIgnoreCase("current date")){ - date(); - } - } - // "close" -> While schleife endet, constructor endet, client ist beendet - } - - // Aufruf "ping": - private void ping() throws IOException{ - try { - zumServer.write("PING"); - System.out.println(vomServer.readLine()); // Gibt Antwort des Servers direkt aus - } catch (IOException e) { - System.err.println("Probleme bei void Ping() (IOException)"); - return; - } - } - - // Aufruf "echo": - private void echo(String eingabe) throws IOException{ - try { - zumServer.write(eingabe); // Ganze Botschaft samt ECHO an Server geben - System.out.println(kuerzen(vomServer.readLine())); // Entfernen von "ECHO " - } catch (IOException e) { - System.err.println("Probleme bei void Echo() (IOException)"); - return; - } - } - - // Aufruf "current time": - private void time() throws IOException{ - try { - zumServer.write("CURRENT TIME"); - System.out.println(kuerzen(vomServer.readLine())); // Entfernen von "TIME " - } catch (IOException e) { - System.err.println("Probleme bei void Time() (IOException)"); - return; } } - - // Aufruf "current date": - private void date() throws IOException{ - try { - zumServer.write("CURRENT DATE"); - System.out.println(kuerzen(vomServer.readLine())); // Entfernen von "DATE " - } catch (IOException e) { - System.err.println("Probleme bei void Date() (IOException)"); - return; - } - } - - // Kürzen der ersten 5 Buchstaben, gebraucht für ECHO, TIME, DATE: - private String kuerzen(String eingabe) { - return eingabe.substring(5); - } } diff --git a/AufgabenStuff/ServerAnwendung/src/heimaufgaben/Main.java b/AufgabenStuff/ServerAnwendung/src/heimaufgaben/Main.java index 03a0299..c27bf8c 100644 --- a/AufgabenStuff/ServerAnwendung/src/heimaufgaben/Main.java +++ b/AufgabenStuff/ServerAnwendung/src/heimaufgaben/Main.java @@ -8,7 +8,7 @@ import java.util.*; import java.text.*; public class Main { - public static void main(String[] args) { + public static void main(String[] args) throws IOException { Server server = new Server(); System.out.println("Der Server wurde beendet."); } diff --git a/AufgabenStuff/ServerAnwendung/src/heimaufgaben/Server.java b/AufgabenStuff/ServerAnwendung/src/heimaufgaben/Server.java index b7dd3f3..aca3571 100644 --- a/AufgabenStuff/ServerAnwendung/src/heimaufgaben/Server.java +++ b/AufgabenStuff/ServerAnwendung/src/heimaufgaben/Server.java @@ -8,27 +8,82 @@ import java.util.*; import java.text.*; public class Server{ + private boolean runs = false; // Ist ein Client connected? + private boolean shutdown = false; // Möchte ich den server beenden? public Server() throws IOException{ - this.neuerServer(); + while(!shutdown) { + if(!runs) { + runs = true; + BufferedReader prt = new BufferedReader(new InputStreamReader(System.in)); + System.out.println("Bitte Porteingabe..."); + try{ + if (Integer.parseInt(prt.readLine()) == 2022) { + neuerServer(); + } + else { + System.err.println("Falscher Port, momentan ist nur Port 2022 möglich"); + runs = false; + } + } catch (NumberFormatException e) { + System.err.println("Es dürfen nur Zahlen eingegeben werden!"); + runs = false; + } + } + } } private void neuerServer(){ // Lokale Variablen (Nach Methode ist Server beendet) - Socket serverSocket; + Socket serverSocket = null; BufferedWriter zumClient; BufferedReader vomClient; LinkedList<String> verlauf; try { - ServerSocket tempSocket = new ServerSocket(2022); + ServerSocket tempSocket = new ServerSocket(2022); // Port wird festgelegt System.out.println("Warte auf Client..."); - serverSocket = tempSocket.accept(); - } catch (IOException e) { + serverSocket = tempSocket.accept(); // Sobald cleint sich verbindet, geht es weiter + System.out.println("Client hat sich verbunden!"); + } catch (Exception e) { System.err.println("Probleme bei Verbidnungsherstellung zum CLient"); + return; } verlauf = new LinkedList<String>(); try{ zumClient = new BufferedWriter(new OutputStreamWriter(serverSocket.getOutputStream())); + vomClient = new BufferedReader(new InputStreamReader(serverSocket.getInputStream())); + } catch (IOException e) { + System.err.println("Probleme mit dem Bufferedwriter/reader"); + return; + } + + // Befehle Werden aufgenommen + System.out.println("Erwarte Eingabe..."); + boolean abbruch = false; + while(!abbruch) { + String eingabe = ""; + try{ + eingabe = vomClient.readLine(); + System.out.println("Eingabe vom Client: "+eingabe); + } catch (IOException e) { + System.err.println("Probleme beim Lesen der Client-Eingabe"); + abbruch = true; + } + try{ + if(eingabe.equalsIgnoreCase("exit")){ + abbruch = true; + runs = false; + zumClient.write("EXIT"); + } + if(eingabe.equalsIgnoreCase("ping")) { + zumClient.write("PONG"); + } + } catch (IOException | NullPointerException e) { + System.err.println("Fehler beim schreiben zum Client"); + abbruch = true; + runs = false; + } + } } -- GitLab