Simpler Webserver

Status
Nicht offen für weitere Antworten.

The_S

Top Contributor
Guten Morgen,

ich hab mir mal rein aus Interesse einen eigenen Mini-Webserver geschrieben. Bzw. wollte das machen. Prinzipiell ist das ja nichts anderes als ein ServerSocket auf Port 80 zu öffnen, warten bis ne Anfrage kommt, wenn Anfrage kommt die entsprechende Html-Datei zusenden - Fertig.

Aber wie bekomme ich jetzt raus, welche Datei ich senden muss? Ich habe bis jetzt noch keine Möglichkeit gefunden ein http://123.45.67.89/ von einem http://123.45.67.89/parameter/ zu Unterscheiden :bahnhof: . Oder bin ich da grundsätzlich falsch vorgegangen?

Danke!
 

hupfdule

Top Contributor
Das steht im GET.
Wenn sich der Client mit dem Server verbindet, muss er HTTP sprechen. Und da steht im GET, was er haben will:

Code:
GET /parameter/ HTTP/1.1
 

The_S

Top Contributor
OK, undeutig ausgedrückt :oops: . Wo die Infos stehen weiß ich schon. Ich weiß nur nicht wie ich da dran komme.

[edit] Noch anderst gefragt ;) : Wenn ich über normale Streams den Request des Clients lesen möchte, so bekomme ich immer nur ein "G" (also den Anfang vom "GET"). Anschließend bekomm ich nichts mehr übertragen. Woran kann das liegen?
 

hupfdule

Top Contributor
Hobbit_Im_Blutrausch hat gesagt.:
Wenn ich über normale Streams den Request des Clients lesen möchte, so bekomme ich immer nur ein "G" (also den Anfang vom "GET"). Anschließend bekomm ich nichts mehr übertragen. Woran kann das liegen?
Daran, dass du was verkehrt machst. ;-)
Wie sieht denn der entsprechende Code aus?

PS: "anderst" wird anderst geschrieben ;-)
 

The_S

Top Contributor
Hm, Code habe ich nicht da, sondern nur daheim. Nachdem ich net weiß ob und wann ich heute heimkomme kann ich den vermutlich erst am WE posten. Wie ich es genau gemacht habe, weiß ich leider auch net mehr 100pro auswendig, da der Code schon etwas älter ist. Ist mir nur zufällig jetzt gerade wieder eingefallen ;) .

Wie müsste es denn praktisch nach dem Öffnen des InputStreams vom Client weitergehen? Wenn ich mich recht erinnere, lese ich dann die Anfrage Byte für Byte aus.

Ich bin Franke, ich darf anderst anderst schreiben :p
 

hupfdule

Top Contributor
Hobbit_Im_Blutrausch hat gesagt.:
Wenn ich mich recht erinnere, lese ich dann die Anfrage Byte für Byte aus.

Das ist eigentlich Quatsch. HTTP ist textbasiert, sollte also auch so gelesen werden.
Der HTTP Header ist ein geschlossener Block, auf den eine Leerzeile folgt. Also lies erst mal den ganzen Header bevor du überhaupt was tust. Und dann geh den Header Zeile für Zeile durch und werte ihn aus.
 

The_S

Top Contributor
Nochmal falsch ausgedrückt ;) . Natürlich lese ich nicht ein byte, guck ob ich damit was anfangen kann, lese das nächste byte, ... sondern lese zuerst komplett alles (nur das lesen geschieht halt byte für byte), baue mir daraus dann einen String und hatte vor diesen dann zu "bearbeiten". Nur leider erhalte ich dabei immer nur ein "G". Aber ich seh schon. Ohne Code kann man da wohl wirklich nichts sagen ... :cry:
 

hupfdule

Top Contributor
Hobbit_Im_Blutrausch hat gesagt.:
Nochmal falsch ausgedrückt ;)
*lach* Ich glaub, das zieht sich heut noch etwas. ;-)

. Natürlich lese ich nicht ein byte, guck ob ich damit was anfangen kann, lese das nächste byte
Nee, so hatt ich es auch nicht verstanden. Aber warum liest du nicht zeilenweise per BufferedReader? Damit hättest du schon mal Fehlerquellen ausgeschlossen.

Prinzipiell muss das natürlich auch Byte für Byte gehen, aber da kann man ohne Code leider wirklich nicht erkennen, was da falsch läuft.
 

The_S

Top Contributor
Kann auch sein, dass ich das damals Zeilenweise realisiert habe. Glaube ich hatte es zuerst zeilenweiße und da ich dort kein schlüssiges Ergebnis bekommen habe, hab ichs auf byteweiße umgestellt.

Naja, werd am WE mal Code posten (sofern ichs bis dahin nicht wieder vergessen habe).
 

deleted

Bekanntes Mitglied
könnte dran liegen, dass dein Client z.B. UTF-8 nutzen will, du aber nicht.
Ich würd mir mal das HTTP Protokoll durchlesen...
 

The_S

Top Contributor
joa, das http Protokoll mitsamt Aufbau kenne ich natürlich.

Hm, kannst du mir näher erklären, warum ich bei unterschiedlichen Codierungen ein "G" ausgelesen bekomme, aber ein darauffolgendes "E" nicht mehr?

Danke für deinen Beitrag!
 

HoaX

Top Contributor
ich hab mir das http-protokoll nicht durchgelesen, aber der erfahrung nach:
da bei einer url die sonderzeichen alle codiert werden, z.B. %20 statt leerzeichen, sellen unterschiedliche zeichensätze kein problem dar. ascii

könnte dich evtl interessieren: http://elonen.iki.fi/code/nanohttpd/
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Simpler Eventlistener für Tastaturtaste bauen? Allgemeine Java-Themen 13
D Simpler Timer zum warten Allgemeine Java-Themen 19
Horst79 Ein ganz simpler filebrowser als applet Allgemeine Java-Themen 2
J YAML + Java: Simpler Code funktioniert nur unter Windows Allgemeine Java-Themen 2
H ganz simpler chat Allgemeine Java-Themen 8
thE_29 Simpler FTP Client Allgemeine Java-Themen 3
J Simpler Thread lässt sich NIE über interrupt() unterbrechen Allgemeine Java-Themen 8
F Wie bekommt man alle Filenamen eines Webserver Verzeichnisses Allgemeine Java-Themen 6
D Java auf Webserver Website möglich Allgemeine Java-Themen 7
I Verbindung eines Java-Plugins mit Webserver Allgemeine Java-Themen 3
P Schnittstelle java Programm zu Webserver / Browser Allgemeine Java-Themen 2
M Verbindung zu Webserver schlägt fehl Allgemeine Java-Themen 0
D Input/Output Datei wird lokal aber nicht vom Webserver ausgelesen... Allgemeine Java-Themen 2
D Mini Webserver für GUI Anwendung Allgemeine Java-Themen 5
D Swing Datei vom Webserver auslesen Allgemeine Java-Themen 3
T GWT mit eig. embedded Webserver? Allgemeine Java-Themen 13
G Webserver Funktion Allgemeine Java-Themen 3
W Programm prüft auf webserver ob neue version vorhanden? Allgemeine Java-Themen 3
N Hardware-Webserver mit Java (JSP/Servlet)-Unterstützung? Allgemeine Java-Themen 8
U Webserver auf Roboter Allgemeine Java-Themen 4
G Datei auf Webserver löschen, wie? Allgemeine Java-Themen 12
S Bea Webserver Allgemeine Java-Themen 2
M Java Webserver - Tomcat alleine oder zusammen mit Apache? Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben