使用每个Java程序使用的网络接口?

时间:2013-06-21 11:00:29

标签: java linux

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

  

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

的虚拟网络接口

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

1 个答案:

答案 0 :(得分:1)

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

例如:

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地址。