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 :

Envoyer fichier serveur distant


Sujet :

C

  1. #1
    Fabouney
    Invité(e)
    Par défaut Envoyer fichier serveur distant
    Bonjour,

    voila en fait, j'aimerais savoir comment je pourrais envoyer un fichier sur un serveur distant, via le protocole FTP, j'ai pensé à l'application fget (y'a t'il une fonction fget() en C, ou dois-je utiliser une application externe ?), merci de me dire ce qui serait possible, j'avais péché ca comme solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    HINTERNET hsession, hftp;
    hsession = InternetOpen ("monProg", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);//on ouvre la connection
    if(hsession == NULL) {
      printf("erreur connection");
      return;
    }
    hftp = InternetConnect(hsession, "monserveur ou adresse IP", INTERNET_DEFAULT_FTP_PORT, "login", "password", INTERNET_SERVICE_FTP, 0, 0);
    if(hftp) {
      FtpPutFile(hftp, "fichier.txt", "monfichiersurleserveur.txt", FTP_TRANSFER_TYPE_ASCII, 0);
      InternetCloseHandle(hftp);
    }
    else printf("erreur connection FTP");
    InternetCloseHandle(hsession);
    mais bon à la compilation ca bug, il me dit :

    src/iroffer_misc.c:1449: error: `HINTERNET' undeclared (first use in this functi
    on)
    src/iroffer_misc.c:1449: error: (Each undeclared identifier is reported only onc
    e
    src/iroffer_misc.c:1449: error: for each function it appears in.)
    src/iroffer_misc.c:1449: error: parse error before "hsession"
    src/iroffer_misc.c:1450: error: `hsession' undeclared (first use in this functio
    n)
    src/iroffer_misc.c:1450: warning: implicit declaration of function `InternetOpen
    '
    src/iroffer_misc.c:1450: error: `INTERNET_OPEN_TYPE_DIRECT' undeclared (first us
    e in this function)
    src/iroffer_misc.c:1455: error: `hftp' undeclared (first use in this function)
    src/iroffer_misc.c:1455: warning: implicit declaration of function `InternetConn
    ect'
    src/iroffer_misc.c:1455: error: `INTERNET_DEFAULT_FTP_PORT' undeclared (first us
    e in this function)
    src/iroffer_misc.c:1455: error: `INTERNET_SERVICE_FTP' undeclared (first use in
    this function)
    src/iroffer_misc.c:1457: warning: implicit declaration of function `FtpPutFile'
    src/iroffer_misc.c:1457: error: `FTP_TRANSFER_TYPE_ASCII' undeclared (first use
    in this function)
    src/iroffer_misc.c:1458: warning: implicit declaration of function `InternetClos
    eHandle'
    merci d'avance à bientot

  2. #2
    Membre averti
    Avatar de Foobar1329
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    283
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 283
    Points : 387
    Points
    387
    Par défaut
    Citation Envoyé par Fabouney
    Bonjour,

    voila en fait, j'aimerais savoir comment je pourrais envoyer un fichier sur un serveur distant, via le protocole FTP, j'ai pensé à l'application fget (y'a t'il une fonction fget() en C, ou dois-je utiliser une application externe ?), merci de me dire ce qui serait possible, j'avais péché ca comme solution :
    Alors en C tu as as une fonction de la bibliothque standard qui s'appelle fgets() et qui permet de récupérer une chaine de caractères dans un tampon en lisant une ligne d'un flux d'entrée.
    Après tu as get (pour récupérer un fichier) et mget (multiple get, pour récupérer plusieurs fichiers) qui sont des sous-commandes de la commande ftp.
    Je ne connais pas de commande fget. De toutes façons, c'est envoyer unf cihier par ftp que tu veux, donc i=si il s'agit de commandes ftp, il s'agirait plutôt ds commandes put ou mput.



    Citation Envoyé par Fabouney
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    HINTERNET hsession, hftp;
    hsession = InternetOpen ("monProg", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);//on ouvre la connection
    if(hsession == NULL) {
      printf("erreur connection");
      return;
    }
    hftp = InternetConnect(hsession, "monserveur ou adresse IP", INTERNET_DEFAULT_FTP_PORT, "login", "password", INTERNET_SERVICE_FTP, 0, 0);
    if(hftp) {
      FtpPutFile(hftp, "fichier.txt", "monfichiersurleserveur.txt", FTP_TRANSFER_TYPE_ASCII, 0);
      InternetCloseHandle(hftp);
    }
    else printf("erreur connection FTP");
    InternetCloseHandle(hsession);
    mais bon à la compilation ca bug, il me dit :



    merci d'avance à bientot
    As-tu inclus le fchier d'entête wininet.h ? De même qu'il faut lier ses fichiers objets avec la bibliothèque wininet.lib.

    A+

  3. #3
    Fabouney
    Invité(e)
    Par défaut
    foobar que veux tu dire par :

    De même qu'il faut lier ses fichiers objets avec la bibliothèque wininet.lib.
    j'ai bien rajouté ces lignes dans mon fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #include <wininet.h>
    #include <windows.h>
    voila

  4. #4
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Fabouney
    j'ai bien rajouté ces lignes dans mon fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #include <wininet.h>
    #include <windows.h>
    OK, ça, ce sont les interfaces (fichiers d'en-tête), mais on te parle de la bibliothèque (wininet.lib). Tu l'a ajoutée à ton projet ?

    http://emmanuel-delahaye.developpez....m#bibliotheque
    Pas de Wi-Fi à la maison : CPL

  5. #5
    Fabouney
    Invité(e)
    Par défaut
    j'ai donc linké cette dll comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #pragma comment(lib, "Wininet.lib")
    mais j'obtient ce message d'erreur a la compilation :

    warning: ignoring #pragma comment

  6. #6
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Fabouney
    j'ai donc linké cette dll comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #pragma comment(lib, "Wininet.lib")
    Mauvaise méthode (non portable, c'est un bidule foireux de Microsoft...)
    mais j'obtient ce message d'erreur a la compilation :
    Pourquoi je ne suis pas étonné. Quel est ton environnement de développement (compilateur, IDE...)
    Pas de Wi-Fi à la maison : CPL

  7. #7
    Fabouney
    Invité(e)
    Par défaut
    je compile avec cygwin, j'ai installé gcc-g++, make, etc, si je retire cette ligne tout va bien, mais je me demande si cette librairies existe vraiment dans mon environement, j'ai check dans la liste (sous le nom de wininet.lib) pour voir si je pouvais l'installer, mais je ne l'ai pas vu dans la liste, alors je sais pas trop :s merci.

    je suis sous windows 2000

  8. #8
    Fabouney
    Invité(e)
    Par défaut
    Mauvaise méthode (non portable, c'est un bidule foireux de Microsoft...)
    pourrais tu me dire pourquoi, et pourquoi la meilleur méthode lol

    dans mon dossier "lib", j'ai ce fichier "libwininet.a" donc dois-je linké celui-là ?

  9. #9
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Fabouney
    pourrais tu me dire pourquoi, et pourquoi la meilleur méthode lol

    dans mon dossier "lib", j'ai ce fichier "libwininet.a" donc dois-je linké celui-là ?
    Sur la ligne de commande du linker (j'espère que tu utilises un Makefile), tu ajoutes
    Détails sur http://www.developpez.net/forums/forumdisplay.php?f=65
    Pas de Wi-Fi à la maison : CPL

  10. #10
    Fabouney
    Invité(e)
    Par défaut
    ma ligne était comme ceci avant, dans mon makefile :

    je l'ai modifié comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CONFIG_LDLIBS= -lcrypt -lwininet
    Correct ? en tout les cas, je n'ai plus d'erreur à la compile et mon exe et créer.

  11. #11
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Fabouney
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CONFIG_LDLIBS= -lcrypt -lwininet
    Correct ?
    Voui. Alors, tu savais le faire, garnement...
    Pas de Wi-Fi à la maison : CPL

  12. #12
    Fabouney
    Invité(e)
    Par défaut
    Merci Emmanuel pour ton aide

Discussions similaires

  1. ouverture fichier serveur distant
    Par warning_007 dans le forum Langage
    Réponses: 0
    Dernier message: 29/03/2010, 17h11
  2. Affichage fichier serveur distant
    Par oclone dans le forum ASP.NET
    Réponses: 15
    Dernier message: 10/02/2009, 10h28
  3. récupérer un fichier sur un serveur distant
    Par Phiss dans le forum ASP
    Réponses: 7
    Dernier message: 17/05/2006, 18h02
  4. existence d'un fichier sur serveur distant
    Par Fabouney dans le forum Programmation et administration système
    Réponses: 3
    Dernier message: 17/01/2006, 10h18
  5. mettre un fichier .xls sur un serveur distant
    Par mael94420 dans le forum ASP
    Réponses: 2
    Dernier message: 05/01/2006, 18h51

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