IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

envoi d'un fichier à un client web


Sujet :

C

  1. #1
    Candidat au Club
    Inscrit en
    Mars 2011
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 3
    Points : 2
    Points
    2
    Par défaut envoi d'un fichier à un client web
    Bonjour,

    voila mon probleme..
    Mon script C ouvre un fichier, puis l'envoie au client, via http.
    Jusque la rien d'anormal.
    Le soucis c'est que sur ce que j'envoie, je n'arrive pas a contrôler ce que le client a déja recu, ce qui a pour conséquence que.
    - Si mon fichier fait 500 Mo
    - Si mon client n'a téléchargé que 1 Mo
    - Le script, lui à envoyé les 500 Mo!
    => Résultat, le serveur http (lighthttpd) consomme plus de 500 Mo de mémoire vive, et le script C rien, et il se termine tranquillement..

    quelqu'un à une solution? ^^

    mon bout de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    while (g < byte_fin)
    {
    l = pread(m,buffer,SIZE_BUFFER,g);
    fwrite(buffer,l,1,stdout);
    g+=l;
    }

  2. #2
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 383
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 383
    Points : 20 455
    Points
    20 455
    Par défaut
    Salut,
    Citation Envoyé par noob35 Voir le message
    Le soucis c'est que sur ce que j'envoie, je n'arrive pas a contrôler ce que le client a déja recu
    c'est complexe ce que tu veux faire ; si tu veux contrôler ce que le client a reçu il faut qu'il t'envoie donc un code de retour une sorte d'accusé de réception.
    La programmation réseau cela passe inévitablement par de la programmation en multithreading.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    while (g < byte_fin)
    {
    l = pread(m,buffer,SIZE_BUFFER,g);
    fwrite(buffer,l,1,stdout);
    g+=l;
    }

    => Résultat, le serveur http (lighthttpd) consomme plus de 500 Mo de mémoire vive, et le script C rien, et il se termine tranquillement..
    c'est pas du tout comme cela qu'il faut faire !
    Il faut envoyer les données sous forme de paquets avec des contrôles d'erreur et que le serveur envoie des codes au client afin de s'assurer que la transmission a bien été effectuée.
    Et puis si tu veux envoyer des gros fichiers à un serveur il vaut mieux envoyer avec le protocole ftp
    Il faut créer un "background thread" qui envoie les données et un autre thread en parallèlle qui "écoute" et contrôle les codes d'erreur de retour aussi bien côté client que serveur.

Discussions similaires

  1. Envoi fichier c# client lourd
    Par clodo13 dans le forum C#
    Réponses: 4
    Dernier message: 07/12/2007, 16h26
  2. Réponses: 1
    Dernier message: 22/08/2007, 09h38
  3. Pb envoi de fichier vers client via "ServletOutputStream"
    Par fredos70 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 14/11/2006, 14h47
  4. Envoi de fichier au client depuis une servlet
    Par vedrfolnir dans le forum Servlets/JSP
    Réponses: 12
    Dernier message: 04/07/2006, 14h57
  5. [vba] Envoi de fichier ascii client Windows => server Lin
    Par kremvax dans le forum Général VBA
    Réponses: 3
    Dernier message: 28/11/2005, 12h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo