Portál AbcLinuxu, 10. května 2025 00:12
Pokud spíše než HTML jste myslel HTTP, tak ano, jde to.
Odpověď můžete zaslat HTTP verzí 1.0, kdy se odpověď ukončí ukončením TCP spojením. Nebo můžete použít verzi 1.1 a tzv. chunked kódování, kdy se tělo odesílá po částech a prokládá se kontrolními bajty určujícími velikost každé části a konec.
V podstatě se musíte vyvarovat standardnímu přenosu verze 1.1, kdy se v hlavičkách odesílá velikost těla, takže server nejprve musí znát celé tělo, takže jak jste popsal, vše se zdrží na serveru a odešle až, když je vše hotovo.
Příklad:
( printf 'HTTP/1.0 200 Ok\r\nContent-Type: text/plain\r\n\r\n'; for N in $(seq 1 5); do printf '%d\r\n' "$N"; sleep 2; done ) | nc -q 0 -l -p 2000
Ale zdá se, že moderní webové prohlížeče nějak nechtějí vykreslovat odpověď průběžně (není případ linksu nebo telnetu). A chunked režim, kde se prohlížeče chytají, se mi nechce implementovat (ale třeba Apache jej pro CGI používá automaticky).
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.