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

Qt Discussion :

Probleme de connect() ?


Sujet :

Qt

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 39
    Points : 70
    Points
    70
    Par défaut Probleme de connect() ?
    Bonjour, la classe suivante, me renvoie plusieurs fois f_LauncherOnis est déjà ouvert, et passe plusieurs fois par finTelechargement et finRecuperationVersion .

    Je pencherais vers un problème avec mes connects, mais j'avoue ne pas voir.

    Je remercie par avance la personne qui prendra le temps de m'aider.

    Psycha

    Code :

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    #include "CClientMaJ.h"
     
    CClientMaJ::CClientMaJ(QUrl urlDownload) : QObject()
    {
        qDebug() << "Constructeur" ;
        f_NumVersionOnline = new QFile("versionOnline.txt") ;
        f_NumVersionLocale = new QFile("versionLocale.txt") ;
        f_NumVersionTemp = new QFile("versionTemp.txt") ;
        f_OnisLauncher = new QFile("MaJOnis.exe") ;
        f_AvancementDown = new QFile("avancementTemp.txt") ;
     
        h_HttpOnis = new QHttp ;
        h_HttpVersion = new QHttp ;
     
        s_VersionOnline = new QString ;
        s_VersionLocale = new QString ;
        s_VersionTemp = new QString ;
     
        u_UrlOnis = new QUrl(urlDownload) ;
        u_UrlVersion = new QUrl("********************") ; // url a risque
     
        QHttpRequestHeader headerVersion("GET", u_UrlVersion->path()) ;
        headerVersion.addValue("HOST", u_UrlVersion->host()) ;
        h_HttpVersion->setHost(u_UrlVersion->host()) ;
     
        f_NumVersionOnline->open(QIODevice::WriteOnly) ;
     
        h_HttpVersion->request(headerVersion, 0, f_NumVersionOnline) ;
     
        connect(h_HttpVersion, SIGNAL(requestFinished(int,bool)), this, SLOT(finRecuperationVersion())) ;
        connect(this, SIGNAL(LancerComparaison()), this, SLOT(LaunchComparaison())) ;
        connect(this, SIGNAL(recommencerTelechargement()), this, SLOT(eraseDownload())) ;
        connect(this, SIGNAL(continuerTelechargement()), this, SLOT(relaunchDownload())) ;
        connect(this, SIGNAL(commencerTelechargement()), this, SLOT(launchDownload())) ;
        connect(h_HttpOnis, SIGNAL(requestFinished(int, bool)), this, SLOT(finTelechargement())) ;
    }
     
    void CClientMaJ::finRecuperationVersion()
    {
        qDebug() << "Fin de la recuperation du numero de version online" ;
        h_HttpVersion->close() ;
     
        f_NumVersionOnline->close() ;
     
        emit LancerComparaison() ;
     
    }
     
    void CClientMaJ::LaunchComparaison()
    {
        qDebug() << "Lancement de la comparaison" ;
        f_NumVersionOnline->open(QIODevice::ReadOnly) ;
        f_NumVersionLocale->open(QIODevice::ReadOnly) ;
     
        s_VersionOnline->append(f_NumVersionOnline->readAll()) ;
        s_VersionLocale->append(f_NumVersionLocale->readAll()) ;
     
        f_NumVersionOnline->close() ;
        f_NumVersionLocale->close() ;
     
        if(s_VersionLocale != s_VersionOnline)
        {
    	if(f_NumVersionTemp->exists())
    	{
    	    f_NumVersionTemp->open(QIODevice::ReadOnly) ;
    	    s_VersionTemp->append(f_NumVersionTemp->readAll()) ;
    	    f_NumVersionTemp->close() ;
     
    	    if(s_VersionTemp != s_VersionOnline)
    	    {
    		emit recommencerTelechargement() ;
    	    }
    	    else
    	    {
    		emit continuerTelechargement() ;
    	    }
    	}
    	else
    	{
    	    emit commencerTelechargement() ;
    	}
        }
     
    }
     
    void CClientMaJ::eraseDownload()
    {
        qDebug() << "Erase telechargement" ;
        f_NumVersionTemp->remove() ;
        f_OnisLauncher->remove() ;
        f_AvancementDown->remove() ;
     
        emit commencerTelechargement() ;
    }
     
    void CClientMaJ::relaunchDownload()
    {
        qDebug() << "Relancement du teléchargement" ;
        f_AvancementDown->open(QIODevice::ReadOnly) ;
        QString avancement = f_AvancementDown->readAll() ;
        f_AvancementDown->close() ;
     
        h_HttpOnis->setHost(u_UrlOnis->host()) ;
     
        QHttpRequestHeader headerOnis("GET", u_UrlOnis->path()) ;
        headerOnis.addValue("HOST", u_UrlOnis->host()) ;
        headerOnis.addValue("Range", avancement) ;
     
        f_OnisLauncher->open(QIODevice::Append) ;
     
        h_HttpOnis->request(headerOnis, 0, f_OnisLauncher) ;
    }
     
    void CClientMaJ::launchDownload()
    {
        qDebug() << "Lancement du telechargement" ;
        h_HttpOnis->setHost(u_UrlOnis->host()) ;
     
        QHttpRequestHeader headerOnis("GET", u_UrlOnis->path()) ;
        headerOnis.addValue("HOST", u_UrlOnis->host()) ;
     
        f_OnisLauncher->open(QIODevice::WriteOnly) ;
     
        h_HttpOnis->request(headerOnis, 0, f_OnisLauncher) ;
    }
     
    void CClientMaJ::finTelechargement()
    {
        qDebug() << "Fin du telechargement de Onis" ;
        h_HttpOnis->close() ;
        f_OnisLauncher->close() ;
    }
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    #ifndef CCLIENTMAJ_H
    #define CCLIENTMAJ_H
     
    #include <QHttp>
    #include <Qurl>
    #include <QString>
    #include <QHttpRequestHeader>
    #include <QFile>
    #include <QDebug>
     
    class CClientMaJ : public QObject
    {
     
        Q_OBJECT
     
        public:
    	CClientMaJ(QUrl) ;
     
        signals :
    	void LancerComparaison() ;
    	void recommencerTelechargement() ;
    	void continuerTelechargement() ;
    	void commencerTelechargement() ;
     
        private slots :
    	void finRecuperationVersion() ;
    	void LaunchComparaison() ;
    	void eraseDownload() ;
    	void relaunchDownload() ;
    	void launchDownload() ;
    	void finTelechargement() ;
     
        private:
    	QFile *f_OnisLauncher ;
    	QFile *f_NumVersionOnline ;
    	QFile *f_NumVersionLocale ;
    	QFile *f_NumVersionTemp ;
    	QFile *f_AvancementDown ;
     
    	QString *s_VersionOnline ;
    	QString *s_VersionLocale ;
    	QString *s_VersionTemp ;
     
    	QHttp *h_HttpOnis ;
    	QHttp *h_HttpVersion ;
     
    	QUrl *u_UrlOnis ;
    	QUrl *u_UrlVersion ;
     
    } ;
     
    #endif // CCLIENTMAJ_H

  2. #2
    Membre expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Points : 3 266
    Points
    3 266
    Par défaut
    Salut,

    En regardant la doc des signaux que tu utilises, tu peux constater qu'un int est passé qui correspondant à l'id de la requête. En comparant l'id de la requête correspondant à la demande de la version et à l'id qu'il t'est passé en paramètre de finRecuperationVersion() tu pourras connaître quand la requête qui t'intéresse est réellement finie.

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 39
    Points : 70
    Points
    70
    Par défaut
    C'était effectivement un problème d'id, tout les méthodes appelé par un QHtpp compte pour une requête.

    Merci !

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 18/07/2005, 13h42
  2. Problème de connection Internet
    Par polka91 dans le forum Mandriva / Mageia
    Réponses: 8
    Dernier message: 22/04/2005, 21h54
  3. Probleme de connection avec MSDE
    Par critok dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 02/04/2005, 00h20
  4. Réponses: 10
    Dernier message: 16/03/2005, 18h25
  5. Probleme de connection entre postgresql et PgAccess
    Par Missvan dans le forum PostgreSQL
    Réponses: 11
    Dernier message: 24/03/2004, 11h14

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