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 {
info.close();
clientSocket.close();
break;
} else if (ausgabe.equals("PONG")) {
System.out.println(ausgabe);
} else if (ausgabe.substring(0, 4).equals("ECHO")) {
} else if (ausgabe.length()>3 && ausgabe.substring(0, 4).equals("ECHO")) {
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));
} 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));
} 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));
} else { // Bei Ping, Verlauf etc:
System.out.println(ausgabe);
}
}
}
......
......@@ -38,17 +38,18 @@ public class Server{
Socket serverSocket = null;
BufferedWriter zumClient;
BufferedReader vomClient;
LinkedList<String> verlauf;
ArrayList<String> verlauf;
try {
ServerSocket tempSocket = new ServerSocket(2022); // Port wird festgelegt
System.out.println("Warte auf Client...");
serverSocket = tempSocket.accept(); // Sobald cleint sich verbindet, geht es weiter
System.out.println("Client hat sich verbunden!");
tempSocket.close();
} catch (Exception e) {
System.err.println("Probleme bei Verbidnungsherstellung zum CLient");
return;
}
verlauf = new LinkedList<String>();
verlauf = new ArrayList<String>();
try{
zumClient = new BufferedWriter(new OutputStreamWriter(serverSocket.getOutputStream()));
vomClient = new BufferedReader(new InputStreamReader(serverSocket.getInputStream()));
......@@ -60,29 +61,96 @@ public class Server{
// Befehle Werden aufgenommen
System.out.println("Erwarte Eingabe...");
boolean abbruch = false;
String eingabe = "";
while(!abbruch) {
String eingabe = "";
try{
eingabe = vomClient.readLine();
System.out.println("Eingabe vom Client: "+eingabe);
verlauf.add(eingabe); // Jede Anfrage wird sich gemerkt
} catch (IOException e) {
System.err.println("Probleme beim Lesen der Client-Eingabe");
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")){
abbruch = true;
runs = false; // Server runned nicht mehr, zurück zum Konstruktor
zumClient.write("EXIT\n");
zumClient.flush();
System.out.println("Der Server wird neugestartet");
serverSocket.close();
}
if(eingabe.equalsIgnoreCase("ping")) {
zumClient.write("PONG");
else if(eingabe.equalsIgnoreCase("ping")) {
zumClient.write("PONG\n");
zumClient.flush();
}
else if(eingabe.equalsIgnoreCase("current time")) {
zumClient.write("TIME "+new SimpleDateFormat("hh:mm:ss").format(new Date())+"\n");
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) {
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;
runs = false;
}
......
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