Hilfe bei Java Server gesucht

steve12

Grünschnabel
Hallo,
Ich habe folgenden Code Geschickt bekommen habe aber iwie noch nicht genau verstanden was er genau macht und im Internet bin ich bisher auch nicht weiter gekommen :(

Was ich bisher verstanden habe ist, dass es sich hierbei um einen Webserver handelt der auf Port 80 oder auf einem vom User eingeben Port liegt. Danach werden der Serversocket eingestellt. Und eigentlich soll der Server dann iwann die angegebene Html nachricht zurückgeben. Aber was passiert hier genau ? Welche Zeile wird eingelesen ?



while (true) {
Socket connection=serverSocket.accept();
BufferedReader br = new BufferedReader(new InputStreamReader
(connection.getInputStream())); // Eine Zeile lesen
String httpLine=br.readLine();
// Antwort senden
PrintWriter pw = new PrintWriter(connection.getOutputStream());
pw.println("HTTP/1.0 200 Ok\n"+ "Content-type: text/html\n\n"+
"<HTML><HEAD><TITLE>Hello</TITLE></HEAD>\n"+
"<BODY><H1>Willkommen</H1>\n"+
"<P>Das HTTP Kommando war:\n"+
"<PRE>\n"+httpLine+"\n</PRE>\n</BODY></HTML>\n");
pw.flush();
connection.close();
} // Interaktion fertig



Und was muss ich nachdem ich dieses Programm bspw. in Eclipse gestartet habe. Wie ihr sicher bemerkt habt bin ich ein ziemlicher Anfänger aber bin daher für eine Erklärung sehr dankbar. Vielen Dank und unten nochmal der Komplette Code :

import java.net.*;
import java.io.*;
public class WebServer {
public static void main(String[] argv) {
// Read the port number from the command line args (Default 80)
int port=80;
if (argv.length==1) {
try {
port=java.lang.Integer.parseInt(argv[0]);
} catch (Exception e) {}
}
// Hauptprogramm
try {
// Server initialisieren
ServerSocket serverSocket= new ServerSocket(port);
while (true) {
Socket connection=serverSocket.accept();
BufferedReader br = new BufferedReader(new InputStreamReader
(connection.getInputStream())); // Eine Zeile lesen
String httpLine=br.readLine();
// Antwort senden
PrintWriter pw = new PrintWriter(connection.getOutputStream());
pw.println("HTTP/1.0 200 Ok\n"+ "Content-type: text/html\n\n"+
"<HTML><HEAD><TITLE>Hello</TITLE></HEAD>\n"+
"<BODY><H1>Willkommen</H1>\n"+
"<P>Das HTTP Kommando war:\n"+
"<PRE>\n"+httpLine+"\n</PRE>\n</BODY></HTML>\n");
pw.flush();
connection.close();
} // Interaktion fertig
} catch (Exception e) { System.err.println(e.getMessage()); }
}
}
 
Zuletzt bearbeitet von einem Moderator:
Es wird eine Zeile aus der Console eingelesen.
Wenn du das Programm in Eclipse startest musst du unter dem Quelltext die Console auswählen und dort etwas hineinschreiben und mit Enter absenden.

Für die Zukunft, Quelltext in CodeTags setzen. Für Java: [code=java] [/code]
 
Danke ja das wusste ich nicht mit dem Code -- Kann es sein dass er nicht die Konsole ausliest sondern die eingegeben Zeile ? Also wenn ich im Browser localhost/testpage eingebe gibt er mir im Browser GET /testpage/index.html HTTP/1.1 aus - wobei das iwelche HTTP Kommandos sein müssen.
 
Upps, Code zu schnell überlesen. Er ließt eine Nachricht ein die über die Socketverbindung geschickt wird. Was das genau ist, kann ich Dir nicht sagen, aber du hast da ja selber schon einen guten Tipp abgegeben.
 
Ich habe trotzdem dazu noch eine Frage - Was genau passiert da ? Wenn ich das Programm laufen lasse antwortet der Server unter Localhost mit dieser aussage. Ab wenn ich jetzt bspw. eine index.html erstellen und danach öffnen und anzeigen lassen möchte. Wie würde ich das machen ? Und wo würde ich diese überhaupt abspeichern ? Oder schreibe ich einfach in das java programm sinngemäß wenn jemand im Browser localhost/files/index.html eingibt - öffne die datei c://server/index.html . Vielen Dank für die Hilfe und ich hoffe meine Frage ist verständlich
 
Zurück