Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
H
Heimaufgabe2
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Wiki
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
RvS Programmierung
Heimaufgabe2
Commits
18009037
Commit
18009037
authored
2 years ago
by
Philipp Lachowski
Browse files
Options
Downloads
Patches
Plain Diff
Paar kleine Sachen wurden ordentlicher gemacht, Dokumentation wurde ganz hinzugefügt
parent
5f831e08
No related branches found
Branches containing commit
No related tags found
1 merge request
!3
Ich checke nicht, warum der In und Output nicht funktioniert.
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
AufgabenStuff/Dokumentation.txt
+59
-1
59 additions, 1 deletion
AufgabenStuff/Dokumentation.txt
AufgabenStuff/ServerAnwendung/src/heimaufgaben/Server.java
+5
-3
5 additions, 3 deletions
AufgabenStuff/ServerAnwendung/src/heimaufgaben/Server.java
with
64 additions
and
4 deletions
AufgabenStuff/Dokumentation.txt
+
59
−
1
View file @
18009037
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
This diff is collapsed.
Click to expand it.
AufgabenStuff/ServerAnwendung/src/heimaufgaben/Server.java
+
5
−
3
View file @
18009037
...
...
@@ -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 Eingabe
n
..."
);
boolean
abbruch
=
false
;
String
eingabe
=
""
;
while
(!
abbruch
)
{
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment