Как отправлять и получать пакеты UDP в QT

Я пишу небольшое приложение на 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 и что приложение прослушивает порт, указанный в wirehark, с помощью Process Explorer.

9
задан zuwgap 29 June 2011 в 03:56
поделиться