begin process at 2012 02 10 19:53:58
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

Réseau & Internet

 > 

Wininet FTP FtpFindFirstFile plusieurs fois


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

Wininet FTP FtpFindFirstFile plusieurs fois

vendredi 6 octobre 2006 à 18:09:43 | Wininet FTP FtpFindFirstFile plusieurs fois

Galmiza

Salut à tous,

J'ai besoin de pouvoir ouvrir plusieurs handles vers des fichiers sur serveur FTP.
Or, je ne peux en ouvrir qu'un.
L'appel d'un autre FtpFindFirstFile renvoie 0.
Est-ce normal ou y a-t-il un moyen de résoudre le problème et comment ?

Merci
vendredi 6 octobre 2006 à 18:10:35 | Re : Wininet FTP FtpFindFirstFile plusieurs fois

Galmiza

Je voulais dire ouvrir plusieurs handles en même temps.
vendredi 6 octobre 2006 à 18:24:08 | Re : Wininet FTP FtpFindFirstFile plusieurs fois

Galmiza

Pour préciser un peu plus, j'utilise la dite fonction avec les paramètres.
HINTERNET hFind = FtpFindFirstFile(m_hFTPConnection, path, &wData, INTERNET_FLAG_RELOAD, 0);

Les path pour les appels de FtpFindFirstFile sont différents.

La connection ayant été initialisée ainsi (en retirant les étapes de vérification):
m_hInternetConnection = InternetOpen( "J-FTP", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0 );
m_hFTPConnection = InternetConnect( m_hInternetConnection, server, port, login, pass, INTERNET_SERVICE_FTP, 0, 0 );
vendredi 6 octobre 2006 à 18:30:18 | Re : Wininet FTP FtpFindFirstFile plusieurs fois

BruNews

Administrateur CodeS-SourceS
Réponse acceptée !
MSDN nous dit:
FtpFindFirstFile is similar to the FindFirstFile function. Note, however, that only one FtpFindFirstFile can occur at a time within a given FTP session.
The enumerations, therefore, are correlated with the FTP session handle.
This is because the FTP protocol allows only a single directory enumeration per session.

Si donc FTP protocol ne veut pas...

ciao...
BruNews, MVP VC++
vendredi 6 octobre 2006 à 18:33:53 | Re : Wininet FTP FtpFindFirstFile plusieurs fois

Galmiza

Je suis désolé Brunews d'avoir posé une question dont la réponse était dans la doc MSDN.
Cependant, merci infiniment ;).
Je vais me débrouiller autrement...

Merci encore
vendredi 6 octobre 2006 à 21:12:20 | Re : Wininet FTP FtpFindFirstFile plusieurs fois

Oeil_de_taupe

Je me rappele avoir eu exectement le même problème pour lister le contenu d'un serveur FTP. Voilà la fonction que j'avais faite pour outrepasser cette limite. Il n'y a aucune assurance qu'elle marche! Je l'ai fait il y a plusieurs années. Je te laisse regarder si des bouts t'intéresse.


void ListElement(CFile* fEcriture, HINTERNET HwndFTP, char* chmFTP)
{

    //Parcours tous les fichier et dossier
    WIN32_FIND_DATA fEnum;
    //Sauvegarde dans le tas des dossiers
    WIN32_FIND_DATA* ficEnr = new WIN32_FIND_DATA[20];
   
    //Recupere le premier fichier et modification du chemin
    char* arbFichier = new char[strlen(chmFTP)+255];
    strcpy(arbFichier, chmFTP);
    strcat(arbFichier, "/");

    //Recherche du premier fichier
    HINTERNET premFichier = FtpFindFirstFile(HwndFTP, arbFichier, &fEnum, NULL, NULL);

    //Test de la validité du handle
    if(!premFichier)
    {
        cout << "Erreur de handle" << endl;
        return;
    }

    //Initialise la variable qui compte le nb de dossier
    int nbDossier = 0;
    do
    {   
        //Filtre dossier et fichier
        if (!(fEnum.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
        {
            //Affiche les fichiers
            cout << "F:" << fEnum.cFileName << endl;
            char* AjoutFichier = new char[255];
            strcpy(AjoutFichier,fEnum.cFileName);
            strcat(AjoutFichier, "\r\n");
            fEcriture->Write(AjoutFichier, strlen(AjoutFichier));
            delete [] AjoutFichier;
        }else{
            //Affiche les dossier et les enregistre
            //cout << "D:" <<  fEnum.cFileName << endl;

            if(nbDossier < 19)
            {
                *(ficEnr + nbDossier) = fEnum;
                nbDossier++;
            }

        }
    }while(InternetFindNextFile(premFichier, &fEnum));

    //Ferme le handle de recherche de fichier dans le rep
    InternetCloseHandle(premFichier);

    //Traite maintenant les dossier du rep, pour pouvoir tous les inspecter
    for(int i = 0; i < nbDossier; i++)
    {
        char* arbSousFich = new char[strlen(chmFTP)+255];
        strcpy(arbSousFich, arbFichier);
        strcat(arbSousFich, (ficEnr+i)->cFileName);
        ListElement(fEcriture, HwndFTP, arbSousFich);
        delete [] arbSousFich;
    }

    delete [] ficEnr;
    delete [] arbFichier;

}


Cette discussion est classée dans : ouvrir, ftp, wininet, ftpfindfirstfile


Répondre à ce message

Sujets en rapport avec ce message

argument de FtpFindFirstFile [ par melkiorlenecrarque ] Voila le probleme: J'arrive bien à parcourir la racine de mon, serveur FTP, en precisant comme chemin NULL, mais je n'arrive pas à parcourir de sous Liste de ossiers ftp Wininet [ par Roulio52 ] Salut à tous !Ca fait plus de 3 jours que je cherche à faire une fonction en c++ avec wininet qui me permettrai de mettre dans un tableau la liste des Wininet.h [ par ekinoks ] Salut !J'ai un GROS problème que je n'arrive pas a résoudre :'(Dans mon programme, je me connecte à des FTP avec la lib "Wininet.h". Mon gestionnaire Wininet et Serveur FTP francais [ par Renfield ] Bonjour,Je suis en train de faire un outil pour le boulot qui joues avec des fichiers sur differents serveurs FTP.j'utilise les API de Wininetl'enumer Ouvrir une deuxième fenêtre Win32 sous Dev-C++ [ par olivier007700 ] Bonjour, Je souhaite ouvrir, depuis une première fenêtre, une deuxième fenêtre tout à fait classique.Quel est le code le plus simple pour ce faire ?Me Ouvrir les fenêtres "Enregistrer sous" et "Ouvrir un fichier" [ par olivier007700 ] Bonjour,J'ai cherché sur plusieurs sites la réponse à ma question, mais je n'ai pas pu la trouver. Pourtant, ça ne doit pas être sorcier ;-)Voilà : Co différence entre deux fichiers distant(FTP) [ par Chount ] Salut,je suis sur un projet en C++ avec les MFC pour mon stage et je bloque sur le fait de trouver les différences entre deux fichiers un sur le local plusieurs fenêtre win32 [ par maevasa ] bonjour,Voilà j'ai un programme qui ouvre sur un menu . Ce menu permet d'ouvrir plusieurs fenêtres mais lorque une est ouverte je ne peux pas cliquer Connexion ftp puis ecriture dans un fichier txt [ par lombredudragon ] Voila je me suis fait une fonction ip(); qui recup mon ip et j'aimerais me faire une fonction qui se connecte a un serveur ftp gratuit(genre free tisc Ouvrir une boite de dialog directement sur le poste de travail [ par Chount ] Salut à tout le monde.Je suis en stage et j'ai quasiment fini mon projet.Je suis dans une phase de "fignolage".J'aimerai dans une boite de dialogue, o


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
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 : 1,139 sec (4)

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