Hallo,
Ich habe mir ein kleines Programm geschrieben, welches mit
folgender Subroutine Verbindung zu einem HTTP-Server aufnimmt
sowie dort Daten anfordert, und desweiteren den Response filtert
(in anderen Routinen :):
perldoc LWP::UserAgent :)
socket SOCK, PF_INET, SOCK_STREAM, getprotobyname('tcp');
perldoc IO::Socket (das ist in der Standard-Distribution)
Ich habe gerade nochmal das lesen vom Socket durch eine
while-Schleife mit gleichzeitiger Ausgabe ersetzt:
while (<SOCK>) { print }
Siehe da, die Header-Daten und auch ein Teil des Inhalts ist
"sofort" da. Dann wartet die Ausgabe, bis der Rest der Daten
eintrudelt. Mit einem anderen Bild geht es genauso. Fordere ich
Text bzw. HTML-Dateien an, gibt es diese Verzögerung nicht!?
(*verwirrtbin*)
Du weisst aber schon, dass es in Binaer-Dateien keine Zeilen gibt?
Will heissen, der <>-Operator muss dann komplett alles aus dem Socket
lesen -- es gibt schliesslich nur eine einzige Zeile.
IMHO solltest du read() bzw. sysread() benutzen und kleine (z. B.
128 Byte) Bloecke lesen. Warum benutzt du eigentlich nicht
LWP::UserAgent?
Gruesse,
CK