在 2 个网络接口上同时绑定和连接

Bind and connect simultaneously on 2 network interfaces

我正在尝试创建一个可以通过 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:连接超时。所以我很困惑

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

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

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

如果您想通过多个接口进行传输,您将不得不自己管理多个套接字,这是一个需要解决的重要问题,并且超出了 Stack Overflow 的范围。