Je cherche depuis deux jours comment envoyer un broadcast UDP. J'ai vu beaucoup d'exemples (aussi les broadcastReceiver et broadcastSender sur le site de qt) mais ils ne fonctionnent toujours pas pour moi. Lorsque j'essaie d'envoyer un broadcast, la méthode QUdpSocket::writeDatagram(..) renvoie -1 et les données ne sont pas transmises. Je suis sur ubuntu 14.04 x64. J'aimerais savoir s'il y a une manipulation particulière à faire pour que ce broadcast fonctionne. Merci et désolé pour mon niveau d'anglais.
voici mon code
envoyeurUDP=new QUdpSocket(this);
recepteurUDP=new QUdpSocket(this);
//démarrage du serveur pour UDP
if (!recepteurUDP->bind(QHostAddress::AnyIPv4,7878,QUdpSocket::ShareAddress | QUdpSocket::ReuseAddressHint)) {
qDebug("Impossible de créer la socket en écoute");
exit(EXIT_FAILURE);
}
connect(recepteurUDP, SIGNAL(readyRead()), this, SLOT(lireDatagrams()));
void FileTransferManager::lireDatagrams(){
char* donnees;
while (recepteurUDP->hasPendingDatagrams()) {
QByteArray datagram;
datagram.resize(recepteurUDP->pendingDatagramSize());
recepteurUDP->readDatagram(datagram.data(), datagram.size());
donnees=datagram.data();
}}
et celui-ci pour envoyer des datagrammes
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 suit :
fileManager.sendDatagram("blabla",QHostAddress::Broadcast);
Voici le résultat de ma commande ifconfig :
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 Paquets TX:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 transmission de fichiers lg: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 Paquets TX:15529 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 transmission de fichiers lg:1000 Octets reçus:6007592 (6.0 MB) Octets transmis:2307422 (2.3 MB)