TCP-Socket 到虚拟机的 IP 地址

Posted

技术标签:

【中文标题】TCP-Socket 到虚拟机的 IP 地址【英文标题】:IP adress for TCP-Socket to virtual machine 【发布时间】:2014-08-21 14:31:46 【问题描述】:

我想在我的 windows-pc 和 linux 虚拟机之间建立套接字通信。 windows机器是服务器。我已经编写了一个在 winpc 上设置服务器的 C++ 程序和一个在 VM 上设置客户端的 Python 程序,但是如何连接它们呢?我使用SOCK_STREAMAF_INET,所以我需要一个端口号和IP 地址来连接到服务器。我只是想知道我应该使用什么 IP 地址,因为它不适用于 IPv4,这是因为它的 IP 地址错误还是因为我的程序中的错误?

编辑 1:抱歉数据不足:

我使用 Oracle Virtual Box,它的 networkconfig 设置为默认值,NAT。当我在主机(Windows)cmd 中运行 ipconfig 时。我得到了多个 IP 地址:

Windows IP Configuration


Wireless LAN adapter Wireless Network Connection:

   Media State . . . . . . . . . . . : *
   Connection-specific DNS Suffix  . : *

Ethernet adapter Local Area Connection:

   Connection-specific DNS Suffix  . : ********
   Link-local IPv6 Address . . . . . : *
   IPv4 Address. . . . . . . . . . . : *
   Subnet Mask . . . . . . . . . . . : *
   Default Gateway . . . . . . . . . : *

**Ethernet adapter VirtualBox Host-Only Network:

   Connection-specific DNS Suffix  . :*
   Link-local IPv6 Address . . . . . : *
   Autoconfiguration IPv4 Address. . : *
   Subnet Mask . . . . . . . . . . . : '*
   Default Gateway . . . . . . . . . :***

Tunnel adapter isatap.*:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :

Tunnel adapter 6TO4 Adapter:

   Connection-specific DNS Suffix  . : ********
   IPv6 Address. . . . . . . . . . . : *
   Default Gateway . . . . . . . . . :

Tunnel adapter isatap.5289AB9F-2C9F-4CBE-B826-149B3CFBB45F:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :*

Tunnel adapter isatap.******:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . : *******

Tunnel adapter Teredo Tunneling Pseudo-Interface:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :*

我倾向于得出结论,“以太网适配器 VirtualBox Host-Only Network”下的 IPv6 地址是正确的。我尝试 ping 局域网地址和 VirtualBox 仅主机网络地址,它们都产生了结果。我也在终端中尝试过 tracerout ,但这也不起作用。有什么想法吗?

【问题讨论】:

我们需要您的代码来判断是否是编码错误。 通常,您在虚拟机中设置端口转发......我认为您的问题目前无法回答。 在 Linux VM 上运行 ifconfig 并查看您的 Linux VM 具有哪些 IP 地址。然后查看是否可以从 Windows 主机 ping 任何这些 IP 地址。如果是这样,那么这些 IP 地址之一就是您的 Windows 主机可用于连接到 Linux VM 的地址。 您使用的是 vmware 工作站还是 hyper-v? 首先确保你的VM已经连接到网络,无论是通过NAT还是Bridge。然后检查你的windows ip,在你的linux上ping它,如果通过了,你可以使用它。 【参考方案1】:

我使用 " 以太网适配器本地连接,链接到链接 IPv6"。在阅读了 NAT 之后,我想这是有道理的!

【讨论】:

以上是关于TCP-Socket 到虚拟机的 IP 地址的主要内容,如果未能解决你的问题,请参考以下文章

kvm的虚拟机的ip怎么查看到

如何获取在本地机器上运行的虚拟机的 IP 地址 [关闭]

VMware虚拟机的IP设置

vbox 中怎么用vboxmanage 查看虚拟机的IP地址。主机是centos系统,没有图形界面

VMware的虚拟机为啥ip地址老是自动变化

虚拟机自动获得IP 地址