1

我在一个刀片上运行了 14 个 java 进程。每个进程都绑定到 ProxyServer (F5) 识别的虚拟 IP,因此当外部客户端调用 F5 时,他的调用重定向到 14 个进程之一。

最重要的是,我的进程(14 个中的一个)执行对在不同刀片上运行的另一个应用程序的调用。

这是一个问题:如何在 TCP 客户端上使用虚拟 IP 运行的 Java 进程上控制传出 TCP 数据包中的源 IP?换句话说,我正在寻找一种将虚拟 IP 设置为传出 TCP 数据包中的源地址的方法。(默认设置为刀片的物理 IP)。

4

2 回答 2

0

您可以使用以下 Socket 构造函数:

Socket(String remoteHost, int remotePort, InetAddress localAddress, int localPort)

或在创建套接字后使用 Socket.bind() 。

请参阅http://docs.oracle.com/javase/6/docs/api/java/net/Socket.html

于 2012-10-20T10:44:48.363 回答
0

暂时忘记语言/库...您为连接套接字定义本地地址和/或本地端口,就像为侦听套接字定义一样。您可以bind()将套接字连接到您想要的任何 IP 地址和/或端口。不绑定与绑定到值相同。

当该值为零时,操作系统将为您选择: 对于地址,它将绑定到用于发送到目的地的接口的地址。对于端口,它将选择一个当前未使用的非特权端口 (>1023)。

于 2012-10-21T23:14:22.883 回答