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

C++ Discussion :

QUdpsocket connection client - client possible?


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 3
    Par défaut QUdpsocket connection client - client possible?
    Bonjour,

    Alors voilà j'ai un souci pour un projet pour mon école. Je dois créer un client qui peut se connecter à un autre (sur un autre réseau) avec la lib QT et un protocole UDP pour faire un VOIP.
    J'arrive à lire et écrire sur la même QUdpsocket mais lorsque je veux écrire sur la socket d'un autre client cela ne marche pas, aucun paquet n'est reçu sur la socket.
    J'ai essayé même dans un réseau local et cela ne marche pas.
    Pourtant si j'ai bien compris le fonctionnement de toutes les fonctions, QT: bind permet de lier un port à une socket et utiliser le signal readyread pour savoir si quelque chose a été écrit sur la socket, et de le récupérer avec readDatagram.
    Et j'utilise writeDatagram pour envoyer un paquet sur la socket de l'autre client.

    Voici le code pour la connexion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    void	UdpClient::connect(const std::string &addr, int port) {
     
        if (mQUdpSocket->bind(QHostAddress(QString(addr.c_str())), port, QUdpSocket::ShareAddress)== false)
                throw Throw_err("fail QUdpSocket::bind");
        QObject::connect(mQUdpSocket, SIGNAL(readyRead()), this, SLOT(SocketReadable()));
         mIsReadable = false;
    }
    Voici le code de l'envoi de paquet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    void    UdpClient::send(const std::string &msg)
    {
       QByteArray data;
     
       data.append(msg.c_str());
       mQUdpSocket->writeDatagram(data, QHostAddress(QString(buff_rec.host.c_str())), buff_rec.port);
    }
    Si quelqu'un a une idée je suis preneur cela fait 3 jours que je suis bloqué sur se problème

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Salut,
    Citation Envoyé par lordsir Voir le message
    J'arrive à lire et écrire sur la même QUdpsocket mais lorsque je veux écrire sur la socket d'un autre client cela ne marche pas, aucun paquet n'est reçu sur la socket.
    La même socket ? La socket d'un autre client ?
    Un socket UDP sert à recevoir et envoyer les données à n'importe quel autre client.
    buff_rec.host.c_str() vaut quoi ?
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 3
    Par défaut
    Si on envoi les paquet avec l'ip 127.0.0.1 et le port qui a été bind cela marche mais seulement si cela et fait sur le même client, si je rentre l'ip et le port dans le write qui on était bind dans un autre client pour lui envoyé des paquets cela ne marche pas. Et buff_rec.hot.c_str() correspond à l'ip du client que l'on veut contacter.

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Si tu n'as pas d'erreur à l'envoi, le problème est à la réception.
    Est-ce que l'autre initialise correctement son socket ? Est-ce que t'es sûr de tes IP/Port ? Est-ce que t'as pas un firewall qui bloquerait ?
    Citation Envoyé par lordsir Voir le message
    Si on envoi les paquet avec l'ip 127.0.0.1 et le port qui a été bind cela marche mais seulement si cela et fait sur le même client
    Euh oui, 127.0.0.1 est l'adresse de loopback.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 3
    Par défaut
    Merci de ton aide c'était bien sur la réception ^^. J'utilisais un thread pour encoder et décoder les paquet un peut plus loin dans le code se qui bloqué le signal readyread au niveau de la réception. Ne pas utiliser thread quand y a connect Merci beaucoup

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

Discussions similaires

  1. Comment connecter un client java à JBoss ?
    Par elscorcho dans le forum Wildfly/JBoss
    Réponses: 2
    Dernier message: 06/10/2006, 17h28
  2. VPN WinXP : impossible de connecter 2 clients
    Par toto33 dans le forum Sécurité
    Réponses: 3
    Dernier message: 09/09/2006, 19h38
  3. Problème de connection Socket Client
    Par xyz dans le forum Réseau
    Réponses: 27
    Dernier message: 12/04/2006, 15h13
  4. Connection XE - client
    Par lietof dans le forum Connexions aux bases de données
    Réponses: 2
    Dernier message: 07/04/2006, 11h54
  5. Connection Serveur Client
    Par d.w.d dans le forum C++
    Réponses: 16
    Dernier message: 21/02/2005, 11h17

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