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

Réseau Discussion :

Tester des identifiants de connexion à un serveur FTP [Débuter]


Sujet :

Réseau

  1. #1
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 309
    Points
    1 309
    Par défaut Tester des identifiants de connexion à un serveur FTP
    Bonjour à tous,
    Dans une application, je dois ajouter un module pour paramétrer un accès à un serveur FTP.
    L'utilisateur renseigne donc les différents paramètres :
    - Hostname
    - Port
    - Login
    - Password
    Je souhaites ajouter un bouton "Tester" pour vérifier que les informations saisies sont corrects.
    Quel est le moyen le plus simple pour vérifier la connexion à un serveur FTP ?
    J'ai essayé du coté de QFtp, QNetworkAccessManager, QNetworkRequest mais sans réussir à implémenter une solution qui fonctionne.

    L'idéal étant une solution synchrone (l’équivalent d'un "open" pour une base de données...).

    Merci d'avance pour vos réponses
    Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 575
    Points
    218 575
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Qu'est ce qui vous a bloqué avec QFtp ?
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 309
    Points
    1 309
    Par défaut
    Le coté asynchrone, et je n'ai pas réussi à obtenir quelque chose de satisfaisant.
    J'ai trouvé une solution pas très optimale, mais qui fonctionne très bien dans mon cas.
    J'utilise le fait qu'il y a un fichier "validation.txt" à la racine du serveur FTP.
    Pour attendre la fin du traitement asynchrone, la solution que j'ai trouvé c'est une boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while (  ( serveurftp->hasPendingCommands() ) || ( serveurftp->currentCommand( ) != QFtp::None ) ) {
    Alors cette solution "bloque" le CPU et le processus, mais dans mon cas c'est très rapide.
    Donc à voir si cette solution est acceptable dans tout les cas, dans le miens ça convient!


    Je la met ici pour ceux que ça intéresse:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    bool checkFtpAccess(void)  {
       bool retour = false ;
       QString tmpfile = "./tmp.tmp" ; // je passe par un fichier temporaire
       QFtp* serveurftp = new QFtp(this) ;
       QFile::remove(tmpfile) ;
       serveurftp->connectToHost("hostname",21);
       serveurftp->login("login","motdepasse");
       QFile* file = new QFile(tmpfile);
       if(file->open(QIODevice::WriteOnly)){
           int idTemp = serveurftp->get("checkfile.txt", file,QFtp::Ascii);
           serveurftp->close();
           while (  ( serveurftp->hasPendingCommands() ) || ( serveurftp->currentCommand( ) != QFtp::None ) ) {
               QApplication::processEvents(); //attendre la récupération fu fichier
               msleep(100) ;
           }
           delete file ;
           QFile* reader = new QFile(tmpfile);
           if(reader->open(QIODevice::ReadWrite)){
                QString str = reader->readAll();
                if( str=="bla bla bla") { // on vérifie le contenu du fichier, dans mon cas il est fixe
                    retour = true ; 
                }
           }
           reader->close();
           delete reader ;
     
       }else{
           // PB de fichier
       }
       delete serveurftp ;
       QFile::remove(tmpfile) ;
       return(retour) ;
    }
    Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...

  4. #4
    Membre confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 294
    Points : 558
    Points
    558
    Par défaut
    Bonjour si Qftp ne repond pas à tes besoins, il y a libcurl (api C) qui fait aussi du ftp upload, et qui a une api synchrone easy et une api asynchrone .voici un exemple avec easy (donc synchrone) de ftp upload :https://curl.haxx.se/libcurl/c/ftpupload.html

  5. #5
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 617
    Points : 188 585
    Points
    188 585
    Par défaut
    Citation Envoyé par sat83 Voir le message
    Pour attendre la fin du traitement asynchrone, la solution que j'ai trouvé c'est une boucle :
    La solution "canonique" serait plutôt d'utiliser les signaux et slots. Tu as le signal commandFinished pour vérifier si une commande s'est exécutée (http://doc.qt.io/archives/qt-4.8/qft...ommandFinished).

    Fais aussi attention à cette méthode hasPendingCommands : elle ne vérifie pas que la commande en cours s'est bien exécutée, juste s'il en reste derrière à exécuter (http://doc.qt.io/archives/qt-4.8/qft...endingCommands). currentId me semble plus adapté (http://doc.qt.io/archives/qt-4.8/qftp.html#currentId).
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/02/2009, 16h04
  2. connexion à mon serveur ftp impossible ?
    Par petitclem dans le forum Distributions
    Réponses: 0
    Dernier message: 28/05/2008, 10h39
  3. pb de connexion à un serveur ftp
    Par mimi51340 dans le forum Débuter avec Java
    Réponses: 16
    Dernier message: 15/05/2008, 08h23
  4. Importation des données à partir d'un serveur FTP
    Par kargero dans le forum Langage
    Réponses: 24
    Dernier message: 31/10/2007, 14h33
  5. [eSVN+Fedora] Connexion à un serveur ftp distant
    Par lun4t1k dans le forum RedHat / CentOS / Fedora
    Réponses: 0
    Dernier message: 17/10/2007, 23h12

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