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:

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);
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
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);
   }
}
Merci