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

Weitestgehend fertig (ohne Http api stuff), History Zahl für viable Zahl geht noch nicht

parent 2199f38b
No related branches found
No related tags found
1 merge request!3Ich checke nicht, warum der In und Output nicht funktioniert.
...@@ -80,16 +80,16 @@ public class Client { ...@@ -80,16 +80,16 @@ public class Client {
info.close(); info.close();
clientSocket.close(); clientSocket.close();
break; break;
} else if (ausgabe.equals("PONG")) { } else if (ausgabe.length()>3 && ausgabe.substring(0, 4).equals("ECHO")) {
System.out.println(ausgabe);
} else if (ausgabe.substring(0, 4).equals("ECHO")) {
System.out.println(ausgabe.substring(5)); System.out.println(ausgabe.substring(5));
} else if (ausgabe.substring(0, 4).equals("TIME")) { } else if (ausgabe.length()>3 && ausgabe.substring(0, 4).equals("TIME")) {
System.out.println(ausgabe.substring(5)); System.out.println(ausgabe.substring(5));
} else if (ausgabe.substring(0, 4).equals("DATE")) { } else if (ausgabe.length()>3 && ausgabe.substring(0, 4).equals("DATE")) {
System.out.println(ausgabe.substring(5)); System.out.println(ausgabe.substring(5));
} else if (ausgabe.substring(0, 5).equals("ERROR")) { } else if (ausgabe.length()>4 && ausgabe.substring(0, 5).equals("ERROR")) {
System.out.println(ausgabe.substring(6)); System.out.println(ausgabe.substring(6));
} else { // Bei Ping, Verlauf etc:
System.out.println(ausgabe);
} }
} }
} }
......
...@@ -38,17 +38,18 @@ public class Server{ ...@@ -38,17 +38,18 @@ public class Server{
Socket serverSocket = null; Socket serverSocket = null;
BufferedWriter zumClient; BufferedWriter zumClient;
BufferedReader vomClient; BufferedReader vomClient;
LinkedList<String> verlauf; ArrayList<String> verlauf;
try { try {
ServerSocket tempSocket = new ServerSocket(2022); // Port wird festgelegt ServerSocket tempSocket = new ServerSocket(2022); // Port wird festgelegt
System.out.println("Warte auf Client..."); System.out.println("Warte auf Client...");
serverSocket = tempSocket.accept(); // Sobald cleint sich verbindet, geht es weiter serverSocket = tempSocket.accept(); // Sobald cleint sich verbindet, geht es weiter
System.out.println("Client hat sich verbunden!"); System.out.println("Client hat sich verbunden!");
tempSocket.close();
} catch (Exception e) { } catch (Exception e) {
System.err.println("Probleme bei Verbidnungsherstellung zum CLient"); System.err.println("Probleme bei Verbidnungsherstellung zum CLient");
return; return;
} }
verlauf = new LinkedList<String>(); verlauf = new ArrayList<String>();
try{ try{
zumClient = new BufferedWriter(new OutputStreamWriter(serverSocket.getOutputStream())); zumClient = new BufferedWriter(new OutputStreamWriter(serverSocket.getOutputStream()));
vomClient = new BufferedReader(new InputStreamReader(serverSocket.getInputStream())); vomClient = new BufferedReader(new InputStreamReader(serverSocket.getInputStream()));
...@@ -60,29 +61,96 @@ public class Server{ ...@@ -60,29 +61,96 @@ public class Server{
// Befehle Werden aufgenommen // Befehle Werden aufgenommen
System.out.println("Erwarte Eingabe..."); System.out.println("Erwarte Eingabe...");
boolean abbruch = false; boolean abbruch = false;
while(!abbruch) {
String eingabe = ""; String eingabe = "";
while(!abbruch) {
try{ try{
eingabe = vomClient.readLine(); eingabe = vomClient.readLine();
System.out.println("Eingabe vom Client: "+eingabe); System.out.println("Eingabe vom Client: "+eingabe);
verlauf.add(eingabe); // Jede Anfrage wird sich gemerkt
} catch (IOException e) { } catch (IOException e) {
System.err.println("Probleme beim Lesen der Client-Eingabe"); System.err.println("Probleme beim Lesen der Client-Eingabe");
abbruch = true; abbruch = true;
try {
zumClient.write(" 500 INTERNAL SERVER ERROR\n");
zumClient.flush();
} catch (IOException f) {
System.err.println("Zusätzlicher Fehler beim Fehler Report an Client");
}
} }
try{ // Jede mögliche Eingabe wird überprüft // Jede mögliche Eingabe wird überprüft
try{
if(eingabe.equalsIgnoreCase("exit")){ if(eingabe.equalsIgnoreCase("exit")){
abbruch = true; abbruch = true;
runs = false; // Server runned nicht mehr, zurück zum Konstruktor runs = false; // Server runned nicht mehr, zurück zum Konstruktor
zumClient.write("EXIT\n"); zumClient.write("EXIT\n");
zumClient.flush(); zumClient.flush();
System.out.println("Der Server wird neugestartet"); System.out.println("Der Server wird neugestartet");
serverSocket.close();
}
else if(eingabe.equalsIgnoreCase("ping")) {
zumClient.write("PONG\n");
zumClient.flush();
} }
if(eingabe.equalsIgnoreCase("ping")) { else if(eingabe.equalsIgnoreCase("current time")) {
zumClient.write("PONG"); zumClient.write("TIME "+new SimpleDateFormat("hh:mm:ss").format(new Date())+"\n");
zumClient.flush(); zumClient.flush();
} }
else if(eingabe.equalsIgnoreCase("current date")) {
zumClient.write("DATE "+new SimpleDateFormat("dd.MM.yyyy").format(new Date())+"\n");
zumClient.flush();
}
else if(eingabe.equalsIgnoreCase("history")) {
String ausg = "Gesamter Verlauf: ";
for(int i=0; i<verlauf.size()-1; i++) {
ausg = ausg.concat(verlauf.get(i)+", ");
}
ausg = ausg.concat(verlauf.get(verlauf.size()-1)+"\n");
zumClient.write(ausg);
zumClient.flush();
}
else if(eingabe.length()>=9 && eingabe.substring(0,7).equalsIgnoreCase("history")) {
int zahl = -1;
try{
zahl = Integer.parseInt(eingabe.substring(8,eingabe.length()));
} catch (NumberFormatException e) {
System.out.println("Der Client muss Zahlen hinter history schreiben smh");
zumClient.write("ERROR 400 BAD REQUEST\n"); // Bei falschem Aufruf
}
if (zahl>=verlauf.size()) {
String ausg = "Gesamter Verlauf: ";
for(int i=0; i<verlauf.size()-1; i++) {
ausg = ausg.concat(verlauf.get(i)+", ");
}
ausg = ausg.concat(verlauf.get(verlauf.size()-1)+"\n");
zumClient.write(ausg);
}
else {
if(zahl>0) {
String ausg = "Verlauf der letzten "+zahl+" Anfragen: ";
for(int i=verlauf.size()-zahl; i<verlauf.size(); i++) {
ausg = ausg.concat(verlauf.get(i)+", ");
}
zumClient.write(ausg);
}
else {
zumClient.write("Super witzig");
}
}
zumClient.flush();
}
else {
zumClient.write("ERROR 400 BAD REQUEST\n"); // Bei falschem Aufruf
zumClient.flush();
}
} catch (IOException | NullPointerException e) { } catch (IOException | NullPointerException e) {
System.err.println("Fehler beim schreiben zum Client"); System.err.println("Fehler beim schreiben zum Client");
try {
zumClient.write("ERROR 500 INTERNAL SERVER ERROR\n");
zumClient.flush();
} catch (IOException f) {
System.err.println("Zusätzlicher Fehler beim Fehler Report an Client");
}
abbruch = true; abbruch = true;
runs = false; runs = false;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment