// Datei: GetFilter.java
// Autor: Brecht
// Datum: 11.12.18
// Thema: Stream-Socket-Verbindung zwischen Browser und Web-
// Server.
// Einfacher Frage/Antwort-Zyklus.
// Nur GET-Requests (ohne favicon) werden bearbeitet.
// ------------------------------------------------------------
import java.io.*; // Fuer den Reader
import java.net.*; // Fuer den Socket
class GetFilter {
public static void main(String[] args) throws Exception {
// Programmstart und Portbelegung
// --------------------------------------------------------
int port = 9876;
System.out.println("\nServer startet am Port"+port);
// ServerSocket einrichten und in einer Schleife auf
// Requests warten.
// --------------------------------------------------------
ServerSocket ss = new ServerSocket(port);
Socket cs = null;
String zeile = null;
BufferedReader br = null;
PrintWriter pw = null;
while(true) {
System.out.println("Server geht ins accept()");
cs = ss.accept();
br = new BufferedReader(
new InputStreamReader(
cs.getInputStream()));
pw = new PrintWriter(cs.getOutputStream());
// Erste Zeile des Requests lesen
// ------------------------------------------------------
zeile = br.readLine();
// Favicon-Requests ignorieren
// ------------------------------------------------------
if(zeile.startsWith("GET /favicon")) {
System.out.println("Favicon-Request: ignorieren");
br.close();
continue; // Zum naechsten Request
}
// Nur GET-Requests durchlassen
// ------------------------------------------------------
if(! zeile.startsWith("GET ")) {
System.out.println("Kein GET-Request: ignorieren");
br.close();
continue; // Zum naechsten Request
}
// Den GET-Request bearbeiten
// (Hier als Beispiel nur zuruecksenden)
// ------------------------------------------------------
System.out.println("GET-Req. erhalten (kein favicon)");
System.out.println("Request wird bearbeitet");
System.out.println("Antwortseite wird geschrieben");
pw.println("HTTP/1.1 200 OK"); // HTML-Header
pw.println("Connection: close");
pw.println("Content-Type: text/html");
pw.println();
pw.println("<html>"); // Antwortseite (HTML)
pw.println("<body>");
pw.println("<h1><font color=green>");
pw.println(zeile);
pw.println("</font></h1>");
pw.println("</body>");
pw.println("</html>");
pw.flush();
pw.close();
br.close();
} // while
} // main()
} // class