Windows には 2 つの物理インターフェイスがあります。各インターフェースで、IPv4 と IPv6 の 2 つの IP アドレスを設定します。次のコードは、この構成での動作を修正しません: joinMulticastGroupは、最初のインターフェースに対してのみtrueを返し、次のインターフェースに対してはjoinMulticastGroupがfalseを返します。
しかし、Windows インターフェイスで IPv6 をオフにすると、このコードは機能します。
理解するのを手伝ってください。
QUdpSocket udpSocket;
QHostAddress groupAddress;
groupAddress = QHostAddress("239.255.255.250");
udpSocket.bind(QHostAddress::AnyIPv4, 1900,
QUdpSocket::ShareAddress | QUdpSocket::ReuseAddressHint);
QList<QNetworkInterface> mListIfaces = QNetworkInterface::allInterfaces();
for (int i = 0; i < mListIfaces.length(); ++i) {
bool rez = udpSocket.joinMulticastGroup(groupAddress, mListIfaces.at(i));
qDebug() << rez;
}