如何在 Linux 上的 Win7 VM 中使用多播?
How can I use multicast in a Win7 VM on Linux?
我在笔记本电脑上使用 Ubuntu 14.04 LTS 来托管 Windows 7 VirtualBox 实例。我想要做的是将笔记本电脑连接到网络(有线或无线),然后 运行 Windows VM 中的一个应用程序连接到 IPv4 多播。该应用程序是用 Qt 4.8.2 编写的,我 运行 在 QtCreator 中安装它。当我 运行 应用程序无法加入多播组时:
QUdpSocket *udpSocket = new QUdpSocket(this);
bResult = udpSocket->bind(port, QUdpSocket::ShareAddress | QUdpSocket::ReuseAddressHint);
bResult = udpSocket->joinMulticastGroup(address);
如果我进入 joinMulticastGroup(),我可以看到 setsockopt() returns -1。此代码在本机 Windows 中运行良好。我试过将 VM 网络连接到 NAT 或将桥接网络连接到 eth0(混杂模式设置为全部允许),但都不起作用。
VirtualBox 是否不允许这样做,或者是否有一些我需要调整的设置,无论是在 VM 中还是在 Linux 主机上?
注意:我无法 运行 Linux 中的 Qt 应用程序,因为它依赖于仅为 Windows.
构建的第三方库
尝试在 Virtualbox 的 VM 网络适配器上将混杂模式设置为 "Allow All"。
最后我通过跟进我遇到的 USB 问题不小心修复了它 - 感谢 Ramon Suarez for his answer to VirtualBox doesn't recognize USB。
我在笔记本电脑上使用 Ubuntu 14.04 LTS 来托管 Windows 7 VirtualBox 实例。我想要做的是将笔记本电脑连接到网络(有线或无线),然后 运行 Windows VM 中的一个应用程序连接到 IPv4 多播。该应用程序是用 Qt 4.8.2 编写的,我 运行 在 QtCreator 中安装它。当我 运行 应用程序无法加入多播组时:
QUdpSocket *udpSocket = new QUdpSocket(this);
bResult = udpSocket->bind(port, QUdpSocket::ShareAddress | QUdpSocket::ReuseAddressHint);
bResult = udpSocket->joinMulticastGroup(address);
如果我进入 joinMulticastGroup(),我可以看到 setsockopt() returns -1。此代码在本机 Windows 中运行良好。我试过将 VM 网络连接到 NAT 或将桥接网络连接到 eth0(混杂模式设置为全部允许),但都不起作用。
VirtualBox 是否不允许这样做,或者是否有一些我需要调整的设置,无论是在 VM 中还是在 Linux 主机上?
注意:我无法 运行 Linux 中的 Qt 应用程序,因为它依赖于仅为 Windows.
构建的第三方库尝试在 Virtualbox 的 VM 网络适配器上将混杂模式设置为 "Allow All"。
最后我通过跟进我遇到的 USB 问题不小心修复了它 - 感谢 Ramon Suarez for his answer to VirtualBox doesn't recognize USB。