MACOS10.15 で QT5.6.3 を使用しています。2 つのイーサネット インターフェイスがあります。1 つは en0 で、もう 1 つは en6 です。en0 の IP は 192.168.10.199、en6 の IP は 192.168.1.123 です。en0 からマルチキャストを受信する必要があります。マルチキャスト グループ アドレスは 239.255.255.251 で、マルチキャスト ポートは 47810 です。簡略化したコードは次のとおりです。
groupAddress = QHostAddress("239.255.255.251");
QNetworkInterface _interface = QNetworkInterface::interfaceFromName("en6");
udpSocket = new QUdpSocket(this);
udpSocket->bind(QHostAddress::AnyIPv4, 47810, QUdpSocket::ShareAddress|QUdpSocket::ReuseAddressHint );
//I am sure the _interface is en6
udpSocket->setMulticastInterface(_interface);
udpSocket->joinMulticastGroup(groupAddress,_interface));
しかし、netstat コマンドを使用すると、指定された en6 ではなく、en0 がマルチキャスト グループに参加していることがわかりました。
IPv4 Multicast Group Memberships
Group Link-layer Address Netif
224.0.0.251 <none> lo0
224.0.0.1 <none> lo0
**239.255.255.251 1:0:5e:7f:ff:fb en0**
224.0.0.1 1:0:5e:0:0:1 en0
224.0.0.251 1:0:5e:0:0:fb en0
224.0.0.251 1:0:5e:0:0:fb en6
224.0.0.1 1:0:5e:0:0:1 en6
en6 をマルチキャスト グループに参加させるにはどうすればよいですか。インターフェースによる joinMulticastGroup のように機能しません。助けてください、ありがとう。