Bonjour,
Je créé actuellement une interface avec des échanges client serveur.
Je suis actuellement devant un petit soucis avec QUdpSocket.
En effet je n'arrive pas à envoyer avec le serveur un message à plus d'une personne.
Je suis en réseau local pour tester.
Sur ce code, c'est toujours le premier client connecté qui recevra le message :s et non pas tous.
coté client:
coté serveur :
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 //RECEPTION m_udpSocket = new QUdpSocket(this); m_udpSocket->bind(QHostAddress::Any, 50885, QUdpSocket::ShareAddress); connect(m_udpSocket, SIGNAL(readyRead()), this, SLOT(get())); //... QString message; QByteArray datagram; datagram.resize(m_udpSocket->pendingDatagramSize()); QHostAddress sender; quint16 senderPort; m_udpSocket->readDatagram(datagram.data(), datagram.size(), &sender, &senderPort); QDataStream in(&datagram, QIODevice::ReadOnly); in >> message; stringr(message); //ENVOI QByteArray paquet; QDataStream out(&paquet, QIODevice::WriteOnly); out << message; m_udpSocket->bind(QHostAddress::Any, 50885, QUdpSocket::ShareAddress); m_udpSocket->writeDatagram(paquet, QHostAddress("192.168.1.10"), 50885);
Merci
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 //RECEPTION m_udpSocket = new QUdpSocket(this); m_udpSocket->bind(QHostAddress::Any, 50885, QUdpSocket::ShareAddress); connect(m_udpSocket, SIGNAL(readyRead()), this, SLOT(get())); //.. QString message; QByteArray datagram; datagram.resize(m_udpSocket->pendingDatagramSize()); QHostAddress sender; quint16 senderPort; m_udpSocket->readDatagram(datagram.data(), datagram.size(), &sender, &senderPort); QDataStream in(&datagram, QIODevice::ReadOnly); in >> message; envoyercord(message); //ENVOI void FenServeur::envoyercord(const QString &message) { QByteArray paquet; QDataStream out(&paquet, QIODevice::WriteOnly); out << message; for (int i = 0; i < iplist.size(); i++) { m_udpSocket->writeDatagram(paquet, QHostAddress(iplist[i]), 50885); } }
Partager