【问题标题】:How can I tell java to use a specific outgoing ip interface for a http request?如何告诉 java 使用特定的传出 ip 接口进行 http 请求?
【发布时间】:2012-10-09 05:34:31
【问题描述】:

有没有人知道在java中强制传出http请求通过特定(逻辑)IP地址的快速方法?

我正在考虑使用 Apache HTTP 客户端(http 组件的一部分),这肯定有办法做到这一点,但 API 看起来并不简单。有没有人用它做过类似的事情?

谢谢。

【问题讨论】:

  • 我原以为这是根据您主机的路由表而不是任何更高级别的层确定的。
  • @NIck,Linux,使用弱主机模型,这意味着它采用路由表而不是 Java 提供的“提示”。然而,Windows 使用强托管模型,这意味着它将使用为 ServerSocket 设置的 IP 地址。

标签: java http sockets


【解决方案1】:

【讨论】:

    【解决方案2】:

    socket.connect(endpoint) 之前使用socket.bind(bindpoint)

    bindpointendpoint 可以是InetSocketAddress

    【讨论】:

      【解决方案3】:

      http.route.local-address 参数是你的朋友 [1]。或者,您可能希望实现自定义HttpRoutePlanner,以便完全控制路由计算过程并使用某种策略将连接分配给本地接口。

      [1]http://hc.apache.org/httpcomponents-client-ga/tutorial/html/connmgmt.html#d4e501

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-04
        相关资源
        最近更新 更多