Qt Version 5.10.0 (MSVC 2015, 32bit)
我的PC有一个静态主机地址(" 192.168.0.106"),以及一个由路由器分配的任意IP地址的设备。我想在它们之间建立UDP连接。
Qt有一个名为multicastreceiver的udp演示,我修改了Receiver :: processPendingDatagrams()函数,如下所示:
QByteArray datagram;
QHostAddress senderIP = QHostAddress();
quint16 portx = 0;
while (udpSocket.hasPendingDatagrams()) {
datagram.resize(int(udpSocket.pendingDatagramSize()));
udpSocket.readDatagram(datagram.data(), datagram.size(), &senderIP, &portx);
statusLabel->setText(tr("Received datagram: \"%1\" @ %2:%3")
.arg(datagram.constData())
.arg(senderIP.toIPv4Address())
.arg(portx));
}
并在构造函数中:
udpSocket.bind(QHostAddress::AnyIPv4, 18427, QUdpSocket::ShareAddress);
connect(&udpSocket, SIGNAL(readyRead()),
this, SLOT(processPendingDatagrams()));
我成功收到了udp消息,但是
senderIP.toIPv4Address() is 0, and senderIP.toString is NULL
portx is 64800 but it is wrong
有人可以告诉我这些代码有什么问题吗?
PS:我可以通过UDP调试工具(PC程序)获取udp消息和发件人IP地址以及正确的端口号。
答案 0 :(得分:1)
我认为您在Qt中发现了一个已知错误:
这在Qt 5.9.4中得到修复 - 我也相信5.10.1。