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_STREAM
和AF_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 地址的主要内容,如果未能解决你的问题,请参考以下文章