电脑装了虚拟机,有虚拟网卡,导致QUdpSocket类无法广播到255.255.255.255.
发现,禁用虚拟网卡后,可以正常广播。
而其它软件,在启用虚拟网卡的情况下,也能正常广播。
原因是:没有绑定电脑物理网卡的ip,导致QUdpSocket类随便找一个网卡发包了。
发现原来的bind方法如下:
mySocket->bind(1500,QUdpSocket::ShareAddress|QUdpSocket::ReuseAddressHint);
现把bind方法修改如下:
mySocket->bind(QHostAddress(gHostIpDec),1500,QUdpSocket::ShareAddress|QUdpSocket::ReuseAddressHint);
其中gHostIpDec即为电脑的物理网卡的ip,可由QNetworkAddressEntry类得到。
最后在Wireshark下,能看到广播的数据。