[so] [Tema 5] Antet HTTP
Adrian Stanciu
adrian.stanciu.pub at gmail.com
Mon May 25 13:12:50 EEST 2015
2015-05-25 12:31 GMT+03:00 Georgiana Diana via so <so at cursuri.cs.pub.ro>:
> Salut,
> Atunci cand raspundem unui request de la un client, trebuie sa trimitem si
> un antet HTTP (200 sau 404, dupa caz), dupa care sa trimitem fisierul. Am
> doua intrebari legate de acest lucru:
>
> 1) Este okay sa trimitem antetul cu functia send [1] (prin apeluri repetate,
> pentru ca socket-ul nu permite o dimensiune foarte mare a bufferului) sau
> exista un mod mai elegant de a face acest lucru ?
Da, este ok. Pe Windows, TransmitFile() are un parametru
lpTransmitBuffers pentru a preciza un header/trailer.
> 2) Daca trimit mai intai antetul si apoi fisierul, atunci cand se compara
> fisierul obtinut de client si cel initial, trimis de server, cmp esueaza,
> pentru ca in fisierul primit de client se afla si antetul. Am vazut ca in
> testele care testeaza (scuze de repetare) existenta antetului (de ex, testul
> 13), se foloseste redirectare catre un fisier, iar testele care compara cele
> doua fisiere (sursa si destinatie), folosesc wget (de ex, testul 17). Nu imi
> dau seama cum sa rezolv aceasta problema, anume faptul ca apare si antetul
> HTTP in fisierul primit de client.
wget nu ar trebui să salveze răspunsul HTTP în fișier. Asigură-te că
răspunsul HTTP trimis de tine este corect și conține:
* linia de status
* header-ele Content-Type, Content-Length, Connection
* linie goală (CRLF)
Vezi exemple de headere HTTP la [2].
Dacă problema nu este de aici, revin-o cu mai multe detalii.
>
> [1] http://linux.die.net/man/3/send
>
[2] http://elf.cs.pub.ro/so/res/teme/tema5-util/http-parser/test.c
Adrian
More information about the so
mailing list