Salut, je bloque depuis quelques jours sur l'envoi d'une requête en broadcast avec QUdpSocket. j'ai vu plusieurs exemple sur le web y compris l'exemple broadcastSender et BroadcastReceiver de QT mais aucun de ces exemples ne fonctionne chez moi. Quand j'essaye de faire un broadcast UDP la méthode QUdpSocket::writeDatagram(...) me renvoie -1. Donc aucune donnée n'est transmise. Je suis sous ubuntu 14.04 x64. J'aimerai savoir si il y'a une manipulation particulière à faire pour que le broadcast fonctionne. je suis vraiment dépité. merci d'avance.

voici mon code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
envoyeurUDP=new QUdpSocket(this);
    recepteurUDP=new QUdpSocket(this);
    //démarrage du serveur pour UDP
    if (!recepteurUDP->bind(QHostAddress::AnyIPv4,8787,QUdpSocket::ShareAddress | QUdpSocket::ReuseAddressHint)) {
      qDebug("Impossible de créer la socket en écoute");
     exit(EXIT_FAILURE);
    }
 
    connect(recepteurUDP, SIGNAL(readyRead()), this, SLOT(lireDatagrams()));
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
void FileTransferManager::lireDatagrams(){
 
    char* donnees;
    while (recepteurUDP->hasPendingDatagrams()) {
            QByteArray datagram;
            datagram.resize(recepteurUDP->pendingDatagramSize());
            recepteurUDP->readDatagram(datagram.data(), datagram.size());
            donnees=datagram.data();
        }
}
cette méthode pour envoyer les datagrammes

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
void FileTransferManager::sendDatagram(string msg, QHostAddress addr){
    QByteArray datagram=msg.data();
        qint64 r=envoyeurUDP->writeDatagram(datagram.data(), datagram.size(),  addr, 7878);
}
et je l'utilise comme ceci:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
fileManager.sendDatagram("blabla",QHostAddress::Broadcast);






voici la sortie de ma commande ifconfig:

here is the output of my ifconfig command:

eth0 Link encap:Ethernet HWaddr f8:a9:63:2d:89:ff
UP BROADCAST MULTICAST MTU:1500 Metric:1 Packets reçus:0 erreurs:0 :0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:1000 Octets reçus:0 (0.0 B) Octets transmis:0 (0.0 B)

lo Link encap:Boucle locale
inet adr:127.0.0.1 Masque:255.0.0.0 adr inet6: ::1/128 Scope:Hôte UP LOOPBACK RUNNING MTU:65536 Metric:1 Packets reçus:5311 erreurs:0 :0 overruns:0 frame:0 TX packets:5311 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:0 Octets reçus:661728 (661.7 KB) Octets transmis:661728 (661.7 KB)

wlan0 Link encap:Ethernet HWaddr b8:ee:65:ab:4f:77
inet adr:10.42.0.1 Bcast:10.42.0.255 Masque:255.255.255.0 adr inet6: fe80::baee:65ff:feab:4f77/64 Scope:Lien UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Packets reçus:14069 erreurs:0 :0 overruns:0 frame:0 TX packets:15529 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:1000 Octets reçus:6007592 (6.0 MB) Octets transmis:2307422 (2.3 MB)