From 180090370fff70c95d207f09fff0e35da57c48af Mon Sep 17 00:00:00 2001 From: philipp023_ <Philipp.Lachowski@tu-dortmund.de> Date: Sun, 11 Dec 2022 14:42:44 +0100 Subject: [PATCH] =?UTF-8?q?Paar=20kleine=20Sachen=20wurden=20ordentlicher?= =?UTF-8?q?=20gemacht,=20Dokumentation=20wurde=20ganz=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AufgabenStuff/Dokumentation.txt | 60 ++++++++++++++++++- .../src/heimaufgaben/Server.java | 8 ++- 2 files changed, 64 insertions(+), 4 deletions(-) diff --git a/AufgabenStuff/Dokumentation.txt b/AufgabenStuff/Dokumentation.txt index 3185ee7..118b4fd 100644 --- a/AufgabenStuff/Dokumentation.txt +++ b/AufgabenStuff/Dokumentation.txt @@ -1,4 +1,62 @@ Dokumentation ============= -... +Client: + +Der Client fragt über einen Bufferedreader "info" zuerst Ip-Adresse und Port ab. +Bei falschen Infos wird er beendet. + +Nachdem der clientSocket erstellt wurde versucht der Client eine Kommunikationsverbindung mit +BufferedWriter "zumServer"und BufferedReader "vomServer" herzustellen. + +Solange der clientSocket connected ist hört der Client dann auf Eingaben. +Jede Eingabe des Clients wird nun an den Server geschickt und die Antworten des Servers werden abgeglichen. +Die Antworten EXIT ECHO TIME DATE und ERROR sind die besonderen Ausgaben. Bei den letzten vier werden genau +diese Worte vom Anfang der Servernachricht abgetrennt und der Rest wird ausgegeben. +EXIT beendet den Client indem der Bufferedreader "info" und der clientSocket geschlossen werden. + +Bei allen anderen Serverausgaben wie zum Beispiel "PONG" oder der beim Verlauf, +wird die Nachricht unverändert ausgegeben. + + +Server: + +Der Server funktioniert anders. Sobald sich ein Client disconnected ist der Server bereit, +eine neue Verbindung herzustellen. +So setzt der Server beim starten von void neuerServer() den boolean "runs" auf true, sodass erstmal +nichts weiter passiert während der Server läuft. Dieser wird auch nur erstellt, falls der richtige Port +im BufferedReader prt eingegeben wird. + +In neuerServer() wird der Server erstellt. Ein ServerSocket mit dem richtigen Port wird erstellt und +wartet auf den Client. In dem Socket "serverSocket" (Nicht verwechseln mit dem ServerSocket "tempSocket") +wird dann die Verbindung mit accept() hergestellt. + +Sobald das passiert wird wie beim Client ein BufferedWriter und ein Reader für Out- und Input deklariert und +initialisiert. +Ebenso wird für den folgenden Verlauf eine ArrayList angelegt. + +Wenn das alles Problemlos klappt, dann kommt der Server in die Schleife in welcher er auf Eingaben wartet. +Solange boolean abbruch false ist, wird die while-Schleife nicht abgebrochen und erwartet immer neue Eingaben. + +Jede Eingabe vom Client wird erstmal aufgenomen, ausgegeben und im Verlauf gespeichert. +Nun wird sie mit allen möglichen Eingaben verglichen. +Eingabe Ping liefert PONG zurück, Echo schickt die Eingabe direkt zurück. Current Time und Current Date erstellen +mit der Klasse SimpleDateFormat jeweils eine Antwort mit der Uhrzeit und mit dem Datum. + +Die Eingabe History unterscheidet zwischen "history" und "history int". +history iteriert einfach durch den gesamten Verlauf, speichert diesen im String "ausg" und schickt diesen dann +an den Client. +history int macht das gleiche, falls der Integer über der Anzahl an Elementen im Verlauf liegt. +Jener Integer wird isoliert, indem der String ab Stelle 9 in einen Int umgewandelt wird (Falls möglich natürlich). +Bei etwas anderem als einem Int wird die interne fehler-boolean-Variable in dieser If-Verzweigung auf true gesetzt, +damit diese nicht weiter versucht damit zu arbeiten. +Falls die Zahl negativ ist wird auch ein Fehler ausgegeben. + +Die Eingabe Exit setzt die abbruch-Variable auf true und runs auf false, sodass nach Beendigung des Servers im +Konstruktor ein neuer erstellt wird. +Zuvor antwortet der Server jedoch noch dem Client und bestätigt das Exit und schließt den serverSocket. +Alle möglichen Fehler werden ebenso an den Client geschickt und gehandelt +______________________________ + +Philipp Lachowski 235486 +Nicolas Mateischek 225979 diff --git a/AufgabenStuff/ServerAnwendung/src/heimaufgaben/Server.java b/AufgabenStuff/ServerAnwendung/src/heimaufgaben/Server.java index 65665ab..dcc2c1a 100644 --- a/AufgabenStuff/ServerAnwendung/src/heimaufgaben/Server.java +++ b/AufgabenStuff/ServerAnwendung/src/heimaufgaben/Server.java @@ -19,13 +19,16 @@ public class Server{ System.out.println("Bitte Porteingabe..."); try{ if (Integer.parseInt(prt.readLine()) == 2022) { + prt.close(); neuerServer(); } else { + prt.close(); System.err.println("Falscher Port, momentan ist nur Port 2022 möglich"); runs = false; } } catch (NumberFormatException e) { + prt.close(); System.err.println("Es dürfen nur Zahlen eingegeben werden!"); runs = false; } @@ -38,7 +41,6 @@ public class Server{ Socket serverSocket = null; BufferedWriter zumClient; BufferedReader vomClient; - ArrayList<String> verlauf; try { ServerSocket tempSocket = new ServerSocket(2022); // Port wird festgelegt System.out.println("Warte auf Client..."); @@ -49,7 +51,7 @@ public class Server{ System.err.println("Probleme bei Verbidnungsherstellung zum CLient"); return; } - verlauf = new ArrayList<String>(); + ArrayList<String> verlauf = new ArrayList<String>();; // History try{ zumClient = new BufferedWriter(new OutputStreamWriter(serverSocket.getOutputStream())); vomClient = new BufferedReader(new InputStreamReader(serverSocket.getInputStream())); @@ -59,7 +61,7 @@ public class Server{ } // Befehle Werden aufgenommen - System.out.println("Erwarte Eingabe..."); + System.out.println("Erwarte Eingaben..."); boolean abbruch = false; String eingabe = ""; while(!abbruch) { -- GitLab