0

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 のように機能しません。助けてください、ありがとう。

4

1 に答える 1

0

Qt5.6.3 のバグです。このバグは 5.11 以降で修正されています。

于 2020-02-29T07:23:56.490 に答える