Pev a écrit :
En fait je viens de voir que sendfile n'utilise pas de socket.
Alors existe il des fonctions qui envoit et recoit des fichiers avec les sockets?
Pierre
|
sendfile n'est pas complètement portable (pas sous windows en tout cas), mais par contre, c'est une des meilleures solutions pour copier le contenu d'un fichier vers un descripteur quelconque, que ce soit un autre fichier, un pipe, ou une socket (change de lunettes, parce que google "man sendfile" te renvoie immédiatement une page qui te parles de socket).
L'intérêt, c'est que c'est le noyau qui fait tout le boulot, donc les données ne sont pas copiées de l'espace système vers l'espace mémoire utilisateur, puis réciproquement. C'est une des méthodes qu'utilise d'ailleurs Apache si je ne m'abuses. L'inconvénient, comme je l'ai dit, c'est que c'est pas très portable.
Le mieux si tu vises la portabilité, c'est de lire ton fichier bloc par bloc, et de l'envoyer avec un write(socket-id, donnees, taille) ou un truc comme ca.