我在笔记本电脑上使用ubuntu 14.04lts来托管一个windows 7 virtualbox实例。我要做的是将笔记本电脑连接到网络(有线或无线),然后在Windows虚拟机中运行连接到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()返回-1。此代码在本机窗口中运行良好。我试过将vm网络连接到nat,或者将桥接网络连接到eth0(使用“混杂模式”设置为“允许全部”),但都不起作用。
virtualbox不允许这样做吗?或者在vm或linux主机上有需要调整的设置吗?
注意:我不能在linux中运行qt应用程序,因为它依赖于只为windows构建的第三方库。
最佳答案
尝试在VirtualBox中的VMS网络适配器上将混杂模式设置为“允许所有”。