Thread Net::HTTP interner Puffer
(14 answers)
Opened by rosti at 2011-03-19 23:01
hi,
Transfer-Encoding: chunked ist das Problem. Der Webserver ermittelt die Content-Length der zu schickenden Response und teilt die dann auf in chunks (Schokoladenstückchen *g). UA-seitig kommen dann in hex die Längenangaben, wie lang ein Stückchen ist und dann das Stückchen selbst usw. und ein Trailer; damit kann der UA das wieder zusammensetzen. Zum Übertragen von Binary-Sequenzen ist das jedoch nicht brauchbar, da müssen exakt eine bestimmte Anzahl an bytes gelesen werden, was am besten gleich aus dem Socket-Handle gemacht wird. LWP ist ok, Hut ab vor der Arbeit, die da drinsteckt. Aber hier bei mir gehts nicht um Texte sondern um Bytes, womit ich möglicherweise im Abseits stehe, aber ich bin stur ;) Z.Z. habe ich zwei Anwendungen für meine Website: Download der Log-Tabelle und Download der Mailbox, beide Tabellen werden aus MySQL gelesen und als Binary zu einem eigens geschriebenen UA übertragen. Die Logtabelle kommt in die lokale DB und aus der Mailbox werden RFC-gerechte Mail-Dateien erzeugt (d.h., die liegen schon RFC-gerecht in MySQL). Eine andere Anwendung ist das "Rippen" eines MP3-Streams (Internet-Radio mitschneiden)... Ergo: Fallback zu HTTP/1.0, kein TE anfordern und beim Empfang vor Allem nicht puffern, dann gehts. --Rolf |