[so] [Tema 5] Antet HTTP

Adrian Stanciu adrian.stanciu.pub at gmail.com
Mon May 25 14:00:02 EEST 2015


2015-05-25 13:40 GMT+03:00 Georgiana Diana <geodiana93 at gmail.com>:
>
>
> 2015-05-25 13:12 GMT+03:00 Adrian Stanciu <adrian.stanciu.pub at gmail.com>:
>>
>> 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
>
>
> Salut,
> Mersi de raspuns, am rezolvat problema :) La header era baiul, trimiteam un
> dummy header si am uitat sa adaug lungimea efectiva a fisierului trimis. Am
> modificat Content-type sa fie "application/octet-stream". Este okay tipul
> asta ?
>

Este bun.


Adrian


More information about the so mailing list