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 Expert
    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 : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    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

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


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

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 082
    Billets dans le blog
    145
    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 Expert
    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 : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    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) ;
    }

  4. #4
    Membre chevronné

    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
    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
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 759
    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