我有以下任务,你会建议,是否(以及如果是)可以解决它:
计算机有2个LAN适配器;每个人都连接到不同的网络提供商。 有些信息必须通过第一个发送,一些信息必须通过第二个发送。
是否有可能通过初始化连接来指定使用哪个适配器?
答案 0 :(得分:5)
在Java中,您可以使用NetworkInterface
类与Socket.bind()
一起指定要绑定的接口。
示例,摘自this reference:
NetworkInterface nif = NetworkInterface.getByName("bge0");
Enumeration nifAddresses = nif.getInetAddresses();
Socket soc = new java.net.Socket();
soc.bind(nifAddresses.nextElement());
soc.connect(new InetSocketAddress(address, port));
然后通过设置两个插槽,每个接口一个,您可以同时使用它们。
解决此问题的另一种方法是使用interface bonding,这是一个配置问题(例如on Linux),并将两个物理接口显示为一个虚拟接口。 (绑定与指定创建套接字时使用的接口完全相反,但不是编程问题)