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 :
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::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; }
Si quelqu'un a une idée je suis preneur cela fait 3 jours que je suis bloqué sur se problème
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); }![]()
Partager