gpt4 book ai didi

c++ - Qt:所有接口(interface)的joinMulticastGroup

转载 作者:行者123 更新时间:2023-11-28 07:22:25 29 4
gpt4 key购买 nike

在 Windows 中我有两个物理接口(interface)。在每个接口(interface)上设置两个IP地址:IPv4和IPv6。以下代码在此配置中无法正常工作: joinMulticastGroup 仅针对第一个接口(interface)和下一个接口(interface)返回 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;
}

最佳答案

我最近在处理多播和 Qt,这个问题似乎仍然存在于 Qt 5.6 和 Win7。

问题是 joinMulticastGroup() 使用接口(interface)的首地址而不检查它是 IPV4 还是 IPV6(即使您在 bind 中使用 AnyIpv4)。

此问题未在 Qt 官方版本中修复,但建议的补丁适用于我:

https://bugreports.qt.io/browse/QTBUG-27641

关于c++ - Qt:所有接口(interface)的joinMulticastGroup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19218994/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com