我正在尝试使用QUdpSocket发送数据报。以下是我正在使用的代码:
udpSocket = new QUdpSocket(this);
QByteArray datagram = "Message";
udpSocket->writeDatagram(datagram.data(), datagram.size(), QHostAddress::Broadcast, 45454);
现在,如果我在只有一个网络适配器的计算机上运行此程序,它似乎可以正常工作。但是,如果有多个适配器,我需要能够控制用于发送数据报的适配器。我发现如果我按以下方式绑定套接字:
udpSocket->bind(QHostAddress("192.168.1.104"), 45454);
那么我可以强制将数据报发送到与该IP关联的本地网络上(否则,它似乎是随机选择一个)。但是,“绑定”功能将套接字设置为侦听数据包,这时我真的不感兴趣。这是控制使用哪个适配器的正确方法,还是有一些更简单的方法来执行此操作?
谢谢
最佳答案
你需要这样的东西
QHostAddress myBroadcastAddress = QHostAddress("192.168.255.255");
udpSocket->writeDatagram(datagram.data(),datagram.size(), myBroadcastAddress , 45454 )
这将发送udp广播数据包。