Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
890 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Envoi de fichiers en TCP

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Envoi de fichiers en TCP

n°932270
Pev
Posté le 27-12-2004 à 10:41:15  profilanswer
 

Bonjour tout le monde,  :hello:  
 
J'aimerais envoyer des fichiers en mode connecté grâce aux sockets sous linux, pour l'instant j'envoi ligne par ligne mais j'ai vu dans le man une fonction sendfile, marche-t-elle correctement et comment fait on pour recuperer les fichiers envoyés? (recvfile ??)  :??:  
Sinon existe il d'autres fonctions toutes faites?
 
Merci  :)  
 
Pierre

mood
Publicité
Posté le 27-12-2004 à 10:41:15  profilanswer
 

n°932292
Pev
Posté le 27-12-2004 à 11:12:45  profilanswer
 

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

n°932328
Lam's
Profil: bas.
Posté le 27-12-2004 à 11:50:12  profilanswer
 

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.

n°932424
Pev
Posté le 27-12-2004 à 12:55:59  profilanswer
 

Merci du renseignement, mais je n'arrive exploiter la fonction sendfile (je prefere rester sous linux) en depit d'avoir lu le "man sendfile".
 
Pourrais tu m'expliquer un envoi de fichier où un client envoie un fichier et le serveur le recoit?
 
Merci   :)  

n°932617
Rits75
to?be:!be
Posté le 27-12-2004 à 17:18:10  profilanswer
 

le mieux c'est d'envoyer par buffer!
tu fé un buf genre 8192, et tu le "send" ou tu le "write" ds ta socket tant que tu n'as pas atteint la taille du fichier (si il est > à 8192 octets bien sur ;))!
pour obtenir la taille de ton fichier tu fé un fseek qui se positionne à la fin de ton fihier et il te renverra sa taille!

n°932676
matafan
Posté le 27-12-2004 à 19:07:16  profilanswer
 

Ben s'il peut utiliser sendfile ca sera toujours mieux qu'utiliser des buffers...

n°933003
Rits75
to?be:!be
Posté le 28-12-2004 à 12:39:53  profilanswer
 

faire son propre sendfile, c'est pas mal non plus!!
et au - c'est portable ;)

n°933153
matafan
Posté le 28-12-2004 à 17:17:03  profilanswer
 

Sauf que ton sendfile n'evitera pas les multiples copyin/copyout, que sendfile() permet justement d'eviter.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Envoi de fichiers en TCP

 

Sujets relatifs
Mettre des fichiers sons non téléchargeables sur le netpb client avec socket tcp en caml
Gestion de fichiers[VBA/SQL/Algo] Access : importation automatique de fichiers
[RESOLU] Pb de lancement de fichiers phpFichiers Batch inexecutables
Boucle : tous les fichiers d'un dossier et non un spécifiquelisting des fichiers d'un répertoire
Parcourir tous les fichiers d'un rep et de ses sous-rep, en gérant laDate dans les fichiers xml/rss
Plus de sujets relatifs à : Envoi de fichiers en TCP


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR