Philipp Hasenfratz: Modem simulation

Beitrag lesen

Halihallo Thomas

wenn ich das Script im orginal Zustand lasse lädt er immer nur einen Teil, (siehe unten). Erst wenn ich das exit(0) entferne, lädt es die Seiten komplett (dann aber mit Zombies ("x" - Client-Prozesse)..

Was folgerst du daraus? - Hm, ich nehme es vorweg: Die Connection wird nicht geschlossen,
da dein Browser einen HTTP/1.1 Request mit Connection: keep-alive sendet. Nun, das
verlinkte Script versteht kein HTTP/1.1 (nicht im geringsten :-)) und wartet somit immer
noch, bis der Server (nach HTTP/1.0) die Response beendet (was eben nie geschieht).
Du musst im Client-Request den HTTP-Header "Connection: keep-alive" durch
"Connection: close" ersetzen, sodass wenn der Client-Prozess (das ist das, nach dem
fork() und next;) nicht unendlich lange wartet, sondern nach dem Empfang der Antwort
vom entfernten Server abbricht und der Prozess verschwinden kann.
Äm, anders rum: Bei Connection: close wird der entfernte Server die Verbindung sofort
beenden, nachdem er die Daten empfangen hat und dein Programm kann das auch feststellen
und bricht dann ab.

Nun hab ich ein Problem, wenn ich eine Seite mit Frames laden lasse, bricht er immer zu früh ab.

Was heisst das, wieweit lädt er denn?

Er unterschiedlich weit...
mal lädt er alle Texte, aber keine Bilder,
und mal nur ein Frame komplett

??? - Folgt keiner Logik, die durch das Programm zu reproduzieren wäre, IMHO.

das tut es bereits. Wie folgerst du, dass es das nicht tut?
Es beendet sich nachdem es eine Seite zum Teil geladen hat..
(Ist bei den Prozessen auch nicht mehr vorhanden)

Was ist in der Prozessliste nicht mehr vorhanden? - Ein Prozess bleibt immer bestehen,
das ist der Server-Prozess, dass die Clients verschinden bei deiner momentanen Umsetzung
nur dadurch zu erklären, dass der entfernte Server HTTP/1.1 ebenfalls nicht versteht.

---

Nun, versuch die Schritte des Programmes zu verstehen. Dies kannst du, indem du eine
Log-datei definierst, wo du die Server-Requests/Responses genau protokollierst und
die jeweilig weitergeleiteten Nachrichten des Programmes. Das wird evtl. schon einige
Fragen beantworten, wenn nicht, schau nochmal hier herein :-)

Viele Grüsse

Philipp