phpbar.de logo

Mailinglisten-Archive

[php] fsockopen, fgest und HTTP

[php] fsockopen, fgest und HTTP

Yannik Hampe yannik at cipher-code.de
Mit Jul 4 18:12:15 CEST 2007



Lutz Zetzsche wrote:
> Hallo Norbert,
> 
> Am Mittwoch, 4. Juli 2007 schrieb Norbert Pfeiffer:
>> also mal unter Vorbehalt:
>> In HTTP 1.1 wurde fest eingefuehrt, Seiten haeppchenweise
>> auszuliefern. IMHO sind die Zahlen die Laenge der einzelnen Haeppchen
>> in Hex oder Dec.
> 
> an den Zusammenhang hatte ich auch schon einmal gedacht. In dem Fall 
> stellt sich mir die Frage, wie ich dann die Datei korrekt auslese. :-) 
> Wie finde ich diese Angaben, um sie entfernen zu können? Die 
> vierstelligen alphanumerischen Zeichenkombinationen stehen ja immer 
> separat in einer Zeile, also mit Zeilenumbruch davor und dahinter. Aber 
> Zeilenumbrüche finden sich ja überall in der Datei...

Warum in der HTTP-Spezifikation nachgucken, wenn man auch per
trial&error zum Ziel kommt? Wenn jede dieser Hexzahlen die Länge eines
Blockes beschreibt musst du dir nur die erste Hex-Zahl einlesen, die
Länge lesen und erwarten, dass du nach dieser Länge die nächste Hex-zahl
findest. Jetzt musst du dir nurnoch überlegen, wie genau diese Hexzahl
zusammengehört.

Für den Fall, dass du doch lieber die Spezifikation zur Hand nehmen
möchtest:

19.4.6 Introduction of Transfer-Encoding

   HTTP/1.1 introduces the Transfer-Encoding header field (section
   14.41). Proxies/gateways MUST remove any transfer-coding prior to
   forwarding a message via a MIME-compliant protocol.

   A process for decoding the "chunked" transfer-coding (section 3.6)
   can be represented in pseudo-code as:

       length := 0
       read chunk-size, chunk-extension (if any) and CRLF
       while (chunk-size > 0) {
          read chunk-data and CRLF
          append chunk-data to entity-body
          length := length + chunk-size
          read chunk-size and CRLF
       }
       read entity-header
       while (entity-header not empty) {
          append entity-header to existing header fields
          read entity-header
       }
       Content-Length := length
       Remove "chunked" from Transfer-Encoding

Die gesamte RFC findet sich hier: http://www.ietf.org/rfc/rfc2616.txt

> 
> Viele Grüße
> Lutz

Yannik

php::bar PHP Wiki   -   Listenarchive