Qt无法加入指定网络接口的多播组
Qt cant join multicast group of the specified networkInterface
我在MACOS10.15上使用QT5.6.3。
我有两个以太网接口。一个是 en0 ,另一个是 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命令,发现en0加入了多播组,不是我指定的en6
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加入多播组,好像通过接口加入多播组是不行的。
请帮助我,谢谢。
Qt5.6.3的bug。
此错误已在 5.11 或更高版本中修复。
我在MACOS10.15上使用QT5.6.3。 我有两个以太网接口。一个是 en0 ,另一个是 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命令,发现en0加入了多播组,不是我指定的en6
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加入多播组,好像通过接口加入多播组是不行的。 请帮助我,谢谢。
Qt5.6.3的bug。 此错误已在 5.11 或更高版本中修复。