【问题标题】:Using which network interface each Java program uses?每个 Java 程序使用哪个网络接口?
【发布时间】:2013-06-21 11:00:28
【问题描述】:

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

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

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

【问题讨论】:

标签: java linux


【解决方案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 地址存储在配置文件或类似文件中。

【讨论】:

  • Network Inteface 类可让您找出接口、它们的 IP 地址并检查它们是否已启动。
猜你喜欢
  • 1970-01-01
  • 2016-02-26
  • 2017-08-13
  • 1970-01-01
  • 1970-01-01
  • 2011-02-13
  • 2016-10-09
  • 2015-07-12
  • 1970-01-01
相关资源
最近更新 更多