我正在使用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 验证了数据包的发送和接收,并且使用 Process Explorer 确认应用程序正在监听 Wireshark 中指定的端口。