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

Discussion :

Se connecter à IRC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Par défaut Se connecter à IRC
    Bonjour,

    J'avance peu à peu avec Qt. Maintenant, je sait gérer des signaux et des slots. C'est cool. Bref, c'est pas ça qui m'emmène ici

    J'arrive en quelque-sort à me connecté, je reçois bien des choses dans mon programme, j'arrive à afficher que j'ai bien reçu. Mais la chaîne est vide

    Je pense qu'un code tel que j'ai écrit serais long à mettre ici, je vais donc synthétisé ce que j'ai fait tel que j'ai une classe qui reçois. J'ai mis un qDebug() pour montrer ce que je voie arrivéer
    Alors voila ce 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
     
    void ConnexionServer::dataReceiv()
    {
        //Données reçues
        QDataStream in(socket);
     
        if(dataSize == 0) {
            if(socket->bytesAvailable() < (int)sizeof(quint8))
                return;
     
            in >> dataSize;
        }
     
        if(socket->bytesAvailable() < dataSize)
            return;
     
        QString receiv;
        in >> receiv;
     
        emit dataQueue(receiv);
        qDebug() << receiv;
    }
    Techniquement il fonctionne, dans la pratique, il affiche "" comme caractère seulement

    Je cherche donc un moyen de savoir le message et de l'afficher. Pour info, dataSize est déclaré comme quint8.

    Merci de votre aide.

  2. #2
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2010
    Messages : 248
    Par défaut Format de message
    Bonjour,

    Je pense que le problème ici est le format du message reçu. En effet, la fonction que tu utilises pour recevoir les messages ne fonctionne que dans le cas ou le serveur utilise ce même format pour envoyer les données, ce qui ne sera sûrement pas le cas avec IRC. (Si c'est bien à IRC que tu veux te connecter). Il semble plutôt que ce code soit inspiré de l'exemple "Chat" de Qt.

    As-tu vérifié quelle valeur tu reçois dans dataSize ? N'est-ce pas 0 par hasard ?

    Je te recommande d'aller lire la doc de IRC ou tu trouvera la définition du format des messages IRC.

    Ceci pourrait aussi être utile : Parsing the IRC message format as a client.

  3. #3
    Membre éclairé Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Par défaut
    Ok, effectivement, tu me met sur la piste que je cherchais !

    Alors, maintenant, il faut que je parle du but de cette fonction et du coup elle ne convient pas !

    Prendre le message tel que -> l'envoyer dans un qDebug() mais le sécurisé. Ensuite, j'ai une classe qui se charge de la partie pure IRC. Donc la fonction actuelle ne doit justement pas parsé.

    En fait, on se retrouve dans le cas suivant.
    1/ MainWindow crée la fenêtre
    2/ MainWindow Connect : Bouton connexion, clicked(), classe ConnexionServer, connexion()
    3/ ConnexionServer via connexion() lance le socket
    4/ ConnexionServer via la classe Read() récupère des message et émet un signal
    5/ Mainwindow Connect : ConnexionServer, Read(QString), this, Afficher(QString)
    6/ MainWindow Connect : ConnexionServer, Read(QString), ircProto, parsing(QString)

    On voie nettement ou sont implémenter mes connect et ce qu'il sont cencé faire. Les noms diffère un peu car j'ai pas le code sous la main mais en gros j'attends un QString complet à parser plus tard. Et ce de façon sécurisé.

    J'ai lue dans le protocole que normalement c'est du 8 bits. A moins que tous les serveurs ne soient pas dans cette convension... Perso, je cherche à me connecter à deux serveurs. Epiknet et freenode. Pour le moment je me concentre sur Epiknet. Le but est que ça marche, d'améliorer.

    Voila, je garde tes liens en mémoire bien sûr ayant une partie que j'ai cherché partout et que je n'ai pas su trouver. Mais avant de faire cela, il faut impérativement faire la réception sécurisé. Il en sera de même pour l'émission vers le serveur.

    Merci.

Discussions similaires

  1. [Python 2.X] me connecté avec irc
    Par mohamedAziz dans le forum Réseau/Web
    Réponses: 0
    Dernier message: 23/11/2014, 18h44
  2. Réponses: 2
    Dernier message: 24/12/2010, 10h03
  3. Rester connecter sur un IRC
    Par Darkknow dans le forum IRC / mIRC
    Réponses: 5
    Dernier message: 30/07/2009, 13h08
  4. Probèmes connections serveurs IRC !
    Par Franck.H dans le forum Réseau
    Réponses: 9
    Dernier message: 22/10/2005, 18h45
  5. [Kylix] Pb connection à Mysql
    Par Anonymous dans le forum EDI
    Réponses: 3
    Dernier message: 25/04/2002, 15h26

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