Skip to content
Snippets Groups Projects
Commit 18009037 authored by Philipp Lachowski's avatar Philipp Lachowski
Browse files

Paar kleine Sachen wurden ordentlicher gemacht, Dokumentation wurde ganz hinzugefügt

parent 5f831e08
No related branches found
No related tags found
1 merge request!3Ich checke nicht, warum der In und Output nicht funktioniert.
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
......@@ -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) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment