Я пишу небольшое приложение в QT, которое отправляет широковещательный пакет UDP по локальной сети и ожидает ответного пакета UDP от одного или нескольких устройств по сети.
Создание сокетов и отправка широковещательного пакета.
udpSocketSend = new QUdpSocket(this);
udpSocketGet = new QUdpSocket(this);
bcast = new QHostAddress("192.168.1.255");
udpSocketSend->connectToHost(*bcast,65001,QIODevice::ReadWrite);
udpSocketGet->bind(udpSocketSend->localPort());
connect(udpSocketGet,SIGNAL(readyRead()),this,SLOT(readPendingDatagrams()));
QByteArray *datagram = makeNewDatagram(); // data from external function
udpSocketSend->write(*datagram);
Приложение отправляет пакет правильно, и ответный пакет приходит, но функция readPendingDatagrams()
никогда не вызывается. Я проверил, что пакеты отправляются и принимаются с помощью Wireshark и что приложение прослушивает порт, указанный в wireshark, с помощью Process Explorer.