Hallo Leute,
ich lese gerade ein Buch über Server und Servlets und da ist gleich am Anfang ein Programm, bei dem ein One-Shot-HTTP-Server eine GET-Anfrage beantworten soll. Man soll außerdem eine Datei, z.B. index.html in seinem Arbeitsverzeichnis haben, damit der Server auch etwas zurückschicken kann.
Wenn ich das Programm starte und anschließend in meinem Internet-Browser http://localhost:8080/index.html eingebe, kommt in der Konsole von meinem Eclipse folgende Ausgabe:
Anfrage: GET / HTTP/1.1
404 Not Found
Also die GET-Anfrage scheint er ja schonmal zu bekommen. Aber eigentlich sollte ja noch mehr ausgegeben werden. In welchem Ordner muss sich denn die index.html befinden, damit der Server auf die Anfrage antworten kann?
Hier ist noch der Programmcode für den HTTP-Server:
Wäre echt super, wenn ihr mir weiterhelfen könnt!
ich lese gerade ein Buch über Server und Servlets und da ist gleich am Anfang ein Programm, bei dem ein One-Shot-HTTP-Server eine GET-Anfrage beantworten soll. Man soll außerdem eine Datei, z.B. index.html in seinem Arbeitsverzeichnis haben, damit der Server auch etwas zurückschicken kann.
Wenn ich das Programm starte und anschließend in meinem Internet-Browser http://localhost:8080/index.html eingebe, kommt in der Konsole von meinem Eclipse folgende Ausgabe:
Anfrage: GET / HTTP/1.1
404 Not Found
Also die GET-Anfrage scheint er ja schonmal zu bekommen. Aber eigentlich sollte ja noch mehr ausgegeben werden. In welchem Ordner muss sich denn die index.html befinden, damit der Server auf die Anfrage antworten kann?
Hier ist noch der Programmcode für den HTTP-Server:
package httpServer;
import java.io.*;
import java.net.*;
import java.util.StringTokenizer;
public class OneShotHttpd{
public final static int HTTP_PORT = 8080;
public static void main(String[] args){
try{
ServerSocket listen = new ServerSocket(HTTP_PORT);
Socket client = listen.accept();
BufferedReader is = new BufferedReader(new InputStreamReader(client.getInputStream()));
DataOutputStream os = new DataOutputStream(client.getOutputStream());
String request = is.readLine();
System.out.println("Anfrage: " + request);
StringTokenizer st = new StringTokenizer(request);
if((st.countTokens()==3) && st.nextToken().equals("GET")){
request = st.nextToken().substring(1);
if(request.endsWith("/") || request.equals(""))
request += "index.html";
sendDocument(os, request);
}
else
System.err.println("400 Bad Request");
is.close();
os.close();
client.close();
}
catch(IOException ioe){
System.err.println("Fehler: " + ioe.toString());
}
}
public static void sendDocument(DataOutputStream out, String file) throws IOException{
try{
BufferedInputStream in = new BufferedInputStream(new FileInputStream(file));
byte[] buf = new byte[1024];
int len;
while((len = in.read(buf, 0, 1024)) != -1){
out.write(buf, 0, len);
}
in.close();
}
catch(FileNotFoundException fnfe){
System.err.println("404 Not Found");
}
}
}
Wäre echt super, wenn ihr mir weiterhelfen könnt!