Moin,
Zunächst mal funktionieren deine Zeilenenden bestenfalls zufällig. RFC 2616 definiert dass die einzig wahren Zeilenenden innerhalb HTTP CRLF sind, also \0x0D\0x0A in PHP (oder such dir ein anderes Zahlensystem). (Und ja, ich habe das in der Vergangenheit auch öfter mal falsch vorgemacht. Sorry dafür.)
Dann: Du gibst vor HTTP 1.1 zu sprechen, und das kann dir viele Probleme bereiten, mindestens eins davon dürfte die Ursache sein. a) HTTP 1.1-Verbindungen werden normalerweise mit Keep-Alive betrieben (das ist relativ leicht durch Connection: Close loszuwerden) und b) HTTP 1.1-Clients müssen Chunked-Encoding verstehen können. Die genaue Vorgehensweise dafür kannst du im genannten RFC nachlesen, aber im Prinzip wird dabei die Länge eines Chunks (undzwar einfach so, und nicht als schöne ASCII-Zahl, da können dann schonmal nicht druckbare Zeichen rauskommen) gefolgt von einem Chunk dieser Länge, gefolgt von der nächsten Länge + Chunk usw. gesendet. Den Abschluss bildet ein besonderer Wert, der mir grade entfallen ist. Wenn man Chunked nicht versteht, kriegt man zwar auch die Seite zu sehen, aber durchsetzt mit lauter komischen (evt. nicht druckbaren) Zeichen.
Mach also erstmal aus dem HTTP 1.1 ein 1.0 und sieh dann weiter.
--
Henryk Plötz
Grüße von der Ostsee