On Thu, May 17, 2018 at 9:13 PM Catalin Neagu via so <so@cursuri.cs.pub.ro> wrote:
> Salut, > > Am cateva intrebari legate de enuntul problemei. > > 1.1 Din cate am inteles din enunt, cererile vor fi siruri de caractere > care respecta protocolul http. Ca si informatie utila din aceaste cereri, > mai e ceva pe langa request path-ul pentru fisier? > Da, în cadrul temei doar path-ul este util. > > 1.2 Ne vor trebui si alte functii de callback pe care sa le includem in > http_parser_settings pentru http_parser_execute? > Vă trebuie doar callback-ul care se apelează după ce este identificat path-ul. > > 2.1 Cum anume va trebui sa fie raspunsul pentru o cerere valida? Trimit > pur si simplu fisierul si apoi trimit un mesaj de genul "HTTP/1.0 200 > OK\r\n"? Sau trebuie sa integrez continutul fisierului intr-un sir de > caractere care are pe langa si alte campuri cum ar fi "Content-Length:" si > altele asemenea? > Pe lângă first line-ul (200 OK) care este obligatoriu, trebuie să trimiți și "Content-Length". HTTP este un protocol la nivel aplicație care rulează peste TCP. Peste TCP se trimit stream-uri de date; asta înseamnă că la nivel de TCP nu poți să-ți dai seama dacă pachet-ul anterior s-a terminat de trimis, sau mai vin date pe același stream. Drept urmare, dacă tu nu trimiți header-ul "Content-Length:", cel care citește răpsunsul tău, nu va putea știi dacă tu ai trimis tot body-ul din răspuns, sau urmează să mai trimiți. De asemenea, este indicat să trimiți și header-ul de "Content-Type:", pentru ca cel care primește răspunsul să știe cum să-l interpreteze. > > 2.2 Cum anume va trebui trimis un fisier folosind mecanismul de zero-copy? > Referitor la intrebarea de mai sus. Acesta nu prea poate fi adus in memoria > procesului pentru acea integrare intr-un mesaj de tip HTTP din cate imi dau > seama. > Nu mi-e clară întrebarea ta. În principiu trebuie să trimiți header-ul HTTP al răspunsului, apoi fișierul pe socket-ul conexiunii. > > 2.3 Cum anume arata o cerere invalida? O cerere care are un path care nu > duce catre nici un fisier si atat? Sau mai sunt si alte campuri din cerere > de care trebuie tinut cont? > O cerere care nu are un path, sau duce către un path inexistent. PS: am modificat subliectul în Tema 5 Sper că e clar acum. Spor! Răzvan
_______________________________________________ http://ocw.cs.pub.ro/courses/so/info/lista-discutii