1 台本地主机上 2 台 Virtual Box 机器之间的 TCP 连接

TCP connection between 2 Virtual Box machines on 1 local host

我在 java 中使用 TCP 连接编写了一个 Client/Server 应用程序。对于 运行 的客户端,我需要为其提供服务器的 IP。它在一个 Windows IP = localhost 的两个控制台上运行良好,但在两个 linux 的 VBox 上运行不佳。我尝试使用 ifconfig 检查 VM 的 IP 是什么,但它只显示 127.0.0.1 并且这不起作用。我应该更改 VM 的某些网络设置还是寻找其他 IP?当我尝试 运行 IP = 127.0.0.1 的客户端时遇到的错误是 "Connection refused"。我应该怎么办?

127.0.0.1 是本地主机或环回地址。它始终表示本地机器(因此,localhost)。所以如果你有 VB1 和 VB2 virtualbox 系统,VB1 的 127.0.0.1 将指向 VB1,而 VB2 将指向 VB2。如果 'ifconfig' 只显示 127.0.0.1 那么你的网络接口没有连接到你的 LAN -- 无论是物理的还是虚拟的。

换句话说:如果您 运行 服务器和客户端都在同一个虚拟机(或物理机)上,127.0.0.1 就可以了。如果它们是网络上的两个不同的主机,它们之间将不会通信。

您需要确保将他们的网络接口配置为共享子网的方法。我通常使用 "Bridged",因此 VB 主机实际上是我物理网络上它们自己的机器。您可以在此处查看选项。

https://www.virtualbox.org/manual/ch06.html#network_nat

然后您需要在服务器主机上使用ifconfig 来获取客户端连接的IP 地址。

另外不要忘记检查两台机器上的防火墙设置。