<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">2015-05-25 13:12 GMT+03:00 Adrian Stanciu <span dir="ltr"><<a href="mailto:adrian.stanciu.pub@gmail.com" target="_blank">adrian.stanciu.pub@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><span class="">2015-05-25 12:31 GMT+03:00 Georgiana Diana via so <<a href="mailto:so@cursuri.cs.pub.ro">so@cursuri.cs.pub.ro</a>>:<br>
> Salut,<br>
> Atunci cand raspundem unui request de la un client, trebuie sa trimitem si<br>
> un antet HTTP (200 sau 404, dupa caz), dupa care sa trimitem fisierul. Am<br>
> doua intrebari legate de acest lucru:<br>
><br>
> 1) Este okay sa trimitem antetul cu functia send [1] (prin apeluri repetate,<br>
> pentru ca socket-ul nu permite o dimensiune foarte mare a bufferului) sau<br>
> exista un mod mai elegant de a face acest lucru ?<br>
<br>
</span>Da, este ok. Pe Windows, TransmitFile() are un parametru<br>
lpTransmitBuffers pentru a preciza un header/trailer.<br>
<span class=""><br>
> 2) Daca trimit mai intai antetul si apoi fisierul, atunci cand se compara<br>
> fisierul obtinut de client si cel initial, trimis de server, cmp esueaza,<br>
> pentru ca in fisierul primit de client se afla si antetul. Am vazut ca in<br>
> testele care testeaza (scuze de repetare) existenta antetului (de ex, testul<br>
> 13), se foloseste redirectare catre un fisier, iar testele care compara cele<br>
> doua fisiere (sursa si destinatie), folosesc wget (de ex, testul 17). Nu imi<br>
> dau seama cum sa rezolv aceasta problema, anume faptul ca apare si antetul<br>
> HTTP in fisierul primit de client.<br>
<br>
</span>wget nu ar trebui să salveze răspunsul HTTP în fișier. Asigură-te că<br>
răspunsul HTTP trimis de tine este corect și conține:<br>
* linia de status<br>
* header-ele Content-Type, Content-Length, Connection<br>
* linie goală (CRLF)<br>
<br>
Vezi exemple de headere HTTP la [2].<br>
Dacă problema nu este de aici, revin-o cu mai multe detalii.<br>
<br>
><br>
> [1] <a href="http://linux.die.net/man/3/send" target="_blank">http://linux.die.net/man/3/send</a><br>
><br>
<br>
[2] <a href="http://elf.cs.pub.ro/so/res/teme/tema5-util/http-parser/test.c" target="_blank">http://elf.cs.pub.ro/so/res/teme/tema5-util/http-parser/test.c</a><br>
<span class=""><font color="#888888"><br>
Adrian<br></font></span></blockquote><div><br></div><div>Salut,</div><div>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 ?</div></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><font color="#0000ff"><b>Georgiana Diana Ciocirdel</b></font><div>Polytechnic University of Bucharest,</div><div>Computer Science</div></div></div>
</div></div>