begin process at 2012 05 30 14:47:59
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Rechercher sur un FTP avec Wininet.dll


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Rechercher sur un FTP avec Wininet.dll

dimanche 30 janvier 2005 à 15:40:40 | Rechercher sur un FTP avec Wininet.dll

Oeil_de_taupe

Bonjour tlm,
 
J'ai commencé à écrire un programme qui permet simplement de lister tous les fichiers contenu sur un FTP. J'ai utilisé la classe CFile pour écrire dans un *.txt les fichiers contenus sur le FTP, et la DLL Wininet.dll pour accèder au FTP.
 
J'ai créé une fonction résurisve pour passer tous les dossiers du FTP en revue, mais je ne comprends pas pourquoi ça me liste juste les fichiers et les dossiers contenus à la racine (le programme lance la fonction récursive une deuxième fois pour les sous-dossiers, mais il ne trouve aucun dossier et fichier, alors qu'il y en a).
 
Voici mon code

/////////////////////////////////////////////////////////////////////////////
// The one and only application object

//Header pour la connection FTP
#include <windows.h>
#include <Wininet.h>
#include <string.h>
#pragma comment(lib, "Wininet.lib")

CWinApp theApp;

using namespace std;

void ListElement(CFile* fEcriture, HINTERNET HwndFTP);

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
    int nRetCode = 0;

    // initialize MFC and print and error on failure
    if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
    {
        // TODO: change error code to suit your needs
        cerr << _T("Fatal Error: MFC initialization failed") << endl;
        nRetCode = 1;
    }
    else
    {
        // TODO: code your application's behavior here.
        CString strFichier;
        CString strFTP;
        CString strLogin;
        CString strPassword;

        //Charge les strings utilent au programme
        strFichier.LoadString(IDS_FICHIER);
        strFTP.LoadString(IDS_FTP);
        strLogin.LoadString(IDS_LOGIN);
        strPassword.LoadString(IDS_PASS);

        cout << "Connection en cours sur le FTP (" << (LPCTSTR)strFTP << ")" << endl;
        cout << "Initialisation de la connection" << endl;
        HINTERNET HwndInternet = InternetOpen("Listsafe de fichier",INTERNET_OPEN_TYPE_DIRECT, (LPCSTR)NULL, (LPCSTR)NULL, 0);
       
        cout << "Connection au serveur" << endl;
        HINTERNET HwndFTP = InternetConnect(HwndInternet,(LPCSTR)strFTP,INTERNET_DEFAULT_FTP_PORT,(LPCSTR)strLogin, (LPCSTR)strPassword, INTERNET_SERVICE_FTP, NULL, NULL);

        cout << "Ouverture du fichier d'enregistrement" << endl;

        CFile* fEcriture = new CFile;
        if(!fEcriture->Open((LPCSTR)strFichier, CFile::modeCreate|CFile::modeWrite, NULL))
        {
            cout << "Echec lors de la creation du fichier source" << endl;
            cin.get();
            return 0;
        }

        //Note retour a la ligne => \r\n

        cout << "Elaboration de la liste en cours..." << endl;
       

        ListElement(fEcriture, HwndFTP);

        cout << "Fermeture des handles de l application" << endl;
        delete fEcriture;
        InternetCloseHandle(HwndInternet);
        InternetCloseHandle(HwndFTP);

        int retour;
        cin >> retour;

    }

    return nRetCode;
}


void ListElement(CFile* fEcriture, HINTERNET HwndFTP)
{
    //Cherche le chemin actuel
    char* CheRel = new char[255];
    DWORD tCheRel = 255;
    if(!FtpGetCurrentDirectory(HwndFTP, (LPTSTR)CheRel, &tCheRel))
    {
        cout << "Une erreur s est produite lors de la reception d un chemin" << endl;
        exit(0);
    }

    //Parcours tous les fichier et dossier
    WIN32_FIND_DATA fEnum;
    HINTERNET premFichier = FtpFindFirstFile(HwndFTP, 0, &fEnum, 0, 0);
    //Recupere le premier fichier

    //Creation du buffer
    char* nomFichier = new char[255];
    nomFichier = strcat(fEnum.cFileName, "\r\n");
    fEcriture->Write(nomFichier, strlen(nomFichier));

    while(InternetFindNextFile(premFichier, &fEnum) != FALSE)
    {   
        //Doit tester et prendre que les dossiers
        cout << fEnum.cFileName << endl;
        if (!(fEnum.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
        {
            //Creation du buffer
            char* nomFichier = new char[255];
            nomFichier = strcat(fEnum.cFileName, "\r\n");
            //strcat(nomFichier, "\r\n");
            fEcriture->Write(nomFichier, strlen(nomFichier));
        }else{
            FtpSetCurrentDirectory(HwndFTP,fEnum.cFileName);
            ListElement(fEcriture, HwndFTP);
            FtpSetCurrentDirectory(HwndFTP,"..");
        }
    }
   
}

Es-ce que quelqu'un aurait une idée pour savoir ou ça marche pas (j'ai créé cette appli avec VC++6, avec la MFC et en console).
 
Merci d'avance


Cette discussion est classée dans : ftp, cout, nomfichier, hwndftp, fecriture


Répondre à ce message

Sujets en rapport avec ce message

Problème de réouverture de fichier texte [ par LFK ] Bonjour, Voici mon problème : J'arrive à ouvrir et afficher le contenu d'un fichier texte, mais sa réouverture ne se passe pas correctement. D'où vien probleme de compilation sous visual [ par misterzinzin ] bonjour, j'ai fait une classe patch qui permet de partcher un fichier de plusieur maniere possible... mais la n'est pas le but de la question en fait cout << while running [ par Galmiza ] Salut,Je fais un programme console.Le programme occupe tout le processeur pour effectuer de complexes calculs de plusieurs minutes.La console et cense aide pour un debutant qui ne trouve pas la solution [ par ledruid ] Bonjour, Etant etudiant et plus tout jeune ( debutant), j'ai un exercice a faire et je ne trouve pas la solution, je vous communique mon probleme, e la creation d'objets en c++ [ par whikie ] Bonjour a tous,Je suis toujours en train d'apprendre les bases du c++, et la je me lance pour creer des objets.Je voudrais creer des objets 'cartes a wxFTP --> lister le répertoire distant dans les collonnes d' un wxListCtrl ....... [ par satellite34 ] Bonjour,Je développe actuellement un petit client FTP (pour mes études).Donc, mon probléme c'est que j' arrive bien a lister le répertoire du site dis Projet [ par DedeSurf ] Bonjour,Je recherche des personnes pour crée un projet regroupant la creation de plusieur app ocx dll dans les domaine de l'image, son, video, encript problème de chaine de caractères (débutant) [ par graall ] salut à tous, j'ai un gros problème avec ce code : (le problème est expliqué dans les commentaires)     FILE *pReference = fopen(reference_path, "r") attente du resultat d'une fenetre [ par babylone2019 ] bonjour,Voila j'ais une fenetre dans laquel je selectionne des infos d'une list view.Ces infos je les balance dans un autre dialog pour que l'utilisat Problème mon prem programe [ par AxeL364 ] bonjour, je début dans le c++ jessaye d'écrire un ptit programme pour progresser mais malheuresement un obstacle (qui parait très stupide et facile po


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 5,398 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales