2

如果我在 linux 系统上有 2 个公共 IP,它们将被表示为虚拟网络接口名称。这就是 Linode 所说的。

Linode 有一个网络接口 eth0。添加 IP 地址时,会创建名为 eth0:1、eth0:2... eth0:n 的虚拟网络接口。

我需要在同一个 Linode 上使用 2 个不同的 Java 应用程序,并且我希望它们每个都使用不同的公共 IP。我需要指定每个 Java 实例使用的网络接口。这可能吗?我正在使用 Debian Linux。

4

1 回答 1

1

您可以使用ServerSocket(int port, int backlog, InetAddress address)构造函数创建绑定到特定 IP 地址(第三个参数)的服务器套接字。地址确定将使用的网络接口。

例如:

String ip = "192.168.1.54"; // read from config file
int port = 9090;            // likewise
InetAddress addr = InetAddress.getByName(ip);
ServerSocket serverSocket = new ServerSocket(port, -1, addr);

如果您有两个不同的应用程序和两个不同的 IP 地址,您可能希望一个应用程序始终使用一个 IP,而另一个应用程序始终使用另一个 IP。为了确保这种关联不会改变,您应该将每个应用程序应该使用的 IP 地址存储在配置文件或类似文件中。

于 2013-06-21T11:05:35.830 回答