在2个网络接口

时间:2016-03-14 13:21:27

标签: java sockets connect

我正在尝试创建一个可以通过Java中的许多网络接口同时下载的HTTP代理,但问题是在Windows =>在使用de bind()函数套接字后,套接字总是使用一个接口连接。所以在收到GET请求后,我通过在指定的网络中使用我的IP地址在不同的接口上创建/绑定套接字:

sock = new Socket();
sock.bind(new InetSocketAddress(Ip_Interface, 0));
sock.connect(new InetSocketAddress(host, (int) pt));

其中Ip_Interface是我的一个接口中的ip地址 'host'和'port'代表我想要连接的远程服务器。

在Ubuntu 14.04上,当我尝试做同样的事情时,服务器没有响应,我总是一个ConnectException:连接超时。所以我很困惑

为什么套接字的bind()函数不起作用? 我怎样才能实现这个功能?

1 个答案:

答案 0 :(得分:0)

它不仅仅是通过软件神奇地发生。

如果要将多个接口绑定在一起以增加吞吐量带宽,则只能在硬件中执行此操作,并且链中的所有硬件都必须支持所谓的Link Aggregation (LACP)。这意味着您可以获得的唯一好处是在支持LAPC的机器之间的内部网络上,并且它们都必须通过支持LACP的交换机连接。

如果你想通过多个接口进行传输,你必须自己管理多个套接字,这是一个非常重要的问题需要解决并超出Stack Overflow的范围。