读书人

虚拟机里头写了一个UDP广播程序但主

发布时间: 2013-01-04 10:04:16 作者: rapoo

虚拟机里面写了一个UDP广播程序,但主机无法收到vmware虚拟机的广播消息。
我的主机是win7,通过WIFI上网,用的是vmware8,在虚拟机linux系统里写了一个简单的UDP广播程序,但主机收不到该广播消息,而虚拟机里面其他客户机系统都能收到广播消息,局域网里其他同学的电脑也能收到。
若我换成有线上网,则主机能收到广播消息。
不知道原因是什么?
[解决办法]
虚拟机的网段和主机windows的网络在一个网段里吗?
[解决办法]
虚拟机NAT上网,LINUX与WINDOWS没有组成局域网,相当于WINDOWS下VM作为NAT服务器,将LINUX虚拟网卡发到WINDOWS虚拟网卡的包修改为从WINDOWS物理网卡发出。

你同学收到的其实都是被NAT后源IP为你WINDOWS物理网卡IP的UDP广播。
[解决办法]
我也遇到类似的情况,但稍有些不同。我的主机是win7,虚拟机vm8,虚拟机里面装的是xp,虚拟机里面发出的广播包主机收不到-----不管是有线还是无线。但是虚拟机发出的广播包能被局域网内其他同学的机器收到。不用虚拟机全部用真实机的话程序工作正常。而且主机上的抓包工具可以抓到虚拟机发出的广播包
[解决办法]
我的问题解决了,原来我把vmnet1 禁止了。启用vmnet1即可。上网找的原理:
VMware三种网络连接上网设置:

1.bridge :

默认使用vmnet0

将虚拟机的ip设置与主机同网段未使用ip,其余与主机相同:

例如主机ip是10.70.54.31,设置虚拟机ip为10.70.54.22。netmask,broadcast,gateway,dns都与主机相同即可实现虚拟机<--->主机 虚拟机<---->互联网 通信。

2.nat :

默认使用vmnet8

将虚拟机设置成使用dhcp方式上网,windows下选择"自动获取ip",linux下开启dhcp服务即可 主机之家

也可以手动设置:

ip设置与vmnet8同网段,gateway设置成vmnet8的gateway(/etc/VMware/vmnet8/nat/nat.conf)中可以查到vmnet8的gateway,通常是xxx.xxx.xxx.2。

netmask,broadcast设置与vmnet8相同,dns设置与主机相同。

例如 vmnet8 ip:172.16.249.1 gw :172.16.249.2

虚拟机设置: ip :172.16.249.100 gw: 172.16.249.2

3.host-only :

默认使用vmnet1

将虚拟机ip设置与vmnet1同网段,gateway设置成vmnet1的ip,其余设置与vmnet1相同,dns设置与主机相同

例如 vmnet1 ip :172.16.245.1

虚拟机设置: ip :172.16.245.100 gateway :172.16.245.1

读书人网 >C语言

热点推荐