分别安装在两个物理主机上ubuntu虚拟机,如何使用sockets()通信,

我用socket()编写网络会话程序,在两台物理主机上通过vmmare都安装了ubuntu虚拟机,下文用1和2编号区别开,两台物理主机通过路由器连接在同一个局域网中,物理... 我用socket()编写网络会话程序,在两台物理主机上通过vmmare都安装了ubuntu虚拟机,下文用1和2编号区别开,两台物理主机通过路由器连接在同一个局域网中,物理主机1的IP是192.168.1.101,VMmare使用NAT,分配给vmmare1的IP是192.168.120.1,vmmare1分配给ubuntu1的IP是192.168.120.128,。另一边物理主机2的IP是192.168.1.103,分配给vmmare2的IP是192.168.32.1,vmmare2分配给ubuntu2的IP是192.168.32.129。我在ubuntu1上执行socket会话程序,但无法使用sendto()找到ubuntu2的地址并发送消息,两个虚拟机之间是相互不能ping通,请问怎样解决?请详细解答,追加高分 展开
 我来答
morliz子轩
2013-10-15 · TA获得超过1.1万个赞
知道大有可为答主
回答量:1.1万
采纳率:56%
帮助的人:2707万
展开全部
呵呵,这个问题比较 好排查解决。

分清两点:

1、当前你编写的网络session程序,是OK的。物理机测试有效;
2、问题点在于,两个虚拟机系统之间不在同一个IP网段内,所以ping不能。说白一点,是未能打通物理网络连接层。

方法思路:
1、首先先要确定,打通了两台PC物理系统的网络连接,在同一IP网段。
2、若物理机用的是动态IP连接,则可可考虑虚拟机中两个OS,用NAT Vnet8进行IP地址转换,一般可以实现连接成功;
3、如果物理机用的都是固定IP,和网关地址。那更好,直接在虚拟机OS中采用物理地址共享,在虚拟机OS中设置好各自的IP地址。该 地址,是实际物理机IP的后一位。
比如:物理机IP:172.18.6.6,网关:172.18.6.126 子网:255.255.255.128
则虚拟机IP:172.18.6.7-254(都可以)网关和子网掩码相同。
注意DNS地址,要和物理机DNS要一致。以保证需要做域名解析服务时正常。
追问
1、我的两台物理主机能相互ping通
2、我的会话程序能在位于同一台物理主机的两台虚拟机中成功会话
3、两台物理主机都在无线路由局域网中,问题就在于ubuntu1和ubuntu2之间不能相互ping通,
如果解决这个问题,应该就能实现两个虚拟机之间的会话,请问具体应该怎样配置呢
一来南y
2013-10-15 · TA获得超过1987个赞
知道小有建树答主
回答量:929
采纳率:75%
帮助的人:231万
展开全部
首先,你得找到问题的原因,确保两部虚拟机直接能直接ping通。我对编程不了解,但接触过点网络。我知道在网络中要通讯,得有个地址,有地址之后还有有查找地址的方法-路由。我看你的描述,你两台虚拟机都是在NAT之后,那它们之间通讯用的就是转换之后的地址了,而不是私有地址了。
追问
你说得对,关键就是现在ubuntu1和2之间ping不通,需要怎样配置才能相互ping通呢
追答
试试虚拟机与主机的连接不要用NAT方式。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式