[so] Tema 5 - fisiere statice

Razvan Deaconescu razvan.deaconescu at cs.pub.ro
Sat May 21 10:05:49 EEST 2011


On 05/21/2011 02:49 AM, Codrin Ciubotariu wrote:
> Salut,
> 
> Am si eu o nelamurire la fisierele statice. Headerul trebuie trimis folosind
> functiile io_setup (io_submit + io_getevents), dupa care trimit fisierul
> folosind sendfile? Pentru ca am incercat sa fac asa, iar wget-ul nu mai asteapta
> continutul propriu zis al fisieului si creeaza fisierul de dimensiunea
> specificata in header, dar toti octetii sunt 0. Am pus un send in loc de
> io_submit si atunci wget-ul astepta continutul fisierului, dupa care primeste
> fisierul cum trebuie (deci functioneaza :) ). Sunt sigur ca mi-a scapat ceva,
> dar nu imi dau seama ce. Operatiile AIO trebuiesc folosite doar la citirea
> fisierelor de pe disc, sau si la trimiterea lor catre clienti?

Salut!

Pe Linux, comunicația pe sockeți se realizează folosind sockeți
non-blocanți. Pe Windows folosind operații asincrone (Overlapped I/O).

Nu vei folosi io_submit & friends pentru a trimite informații pe socket.
Asta se aplică și în cazul header-ului.

În concluzie:
* io_submit & friends pentru a citi date din fișiere pentru fișiere
_dinamice_
* sockeți non-blocanți pentru a trimite date pe socket (atât pentru
fișiere _statice_ cât și _dinamice_)
** sendfile (cumulat cu sockeți non-blocanți) pentru a trimite fișiere
statice pe socket
** send (cumulat cu sockeți non-blocanți) pentru a trimite date din
fișierele dinamice (citite, în prealabil, cu io_submit & friends)

Răzvan


More information about the so mailing list