Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java应用程序是否可以从多个IP地址连接到主机?_Java_Sockets - Fatal编程技术网

Java应用程序是否可以从多个IP地址连接到主机?

Java应用程序是否可以从多个IP地址连接到主机?,java,sockets,Java,Sockets,是否有一种方法可以从单个Java应用程序(托管在tomcat中)打开多个套接字连接,并使每个套接字看起来来自不同的IP地址 背景: 我的团队正在计划如何与第三方系统集成,我们已经签订了为这个系统编写适配器的合同,除了API文档之外,我们没有太多的细节 文档指定了一个基于TCP/IP的协议,允许客户端登录到该协议 该文档规定,给定IP地址/用户只允许一个连接。尽管它是否允许从一个IP地址使用不同用户名进行多个连接尚不明确 我们需要打开一个连接池,因为我们的集成块将充当代理,并且需要并行打开多个连接

是否有一种方法可以从单个Java应用程序(托管在tomcat中)打开多个套接字连接,并使每个套接字看起来来自不同的IP地址

背景:

我的团队正在计划如何与第三方系统集成,我们已经签订了为这个系统编写适配器的合同,除了API文档之外,我们没有太多的细节

文档指定了一个基于TCP/IP的协议,允许客户端登录到该协议

该文档规定,给定IP地址/用户只允许一个连接。尽管它是否允许从一个IP地址使用不同用户名进行多个连接尚不明确


我们需要打开一个连接池,因为我们的集成块将充当代理,并且需要并行打开多个连接,我们希望有唯一的用户名就足够了,但由于我们甚至没有提供测试系统,我们希望覆盖所有的基础。

据我所知,单个网络接口可能有多个IP地址。我绝对相信类似Unix的系统和Windows,无论是物理网卡还是虚拟网卡

但是它们都必须在系统级别声明,并且您的java应用程序必须管理它必须为每个传出连接使用的地址


要在Windows上向网络接口添加新地址,请进入该接口的配置并查找高级面板。详细信息可能因Windows版本而异。

是的,如果您有不同的本地接口,则可以在创建套接字时指定要将套接字绑定到哪个接口。见:


当然,如果您的流量在到达另一个主机的过程中通过任何类型的防火墙,则很有可能数据包上的源IP地址会转移到其他地址,并且很有可能您发送的所有数据包看起来都好像来自同一地址。

如果我是您,我会将应用程序(或至少调用方模块)部署到单独的机器上(物理上或VPS上)


其他(但类似的)解决方案:为API实现一个代理,并将这些小实例部署到单独的机器上(同样是物理或VP)。然后您的代码可以调用代理实例,他们会将请求转发到目标服务器。

似乎是源于
所以你是说IP欺骗?要从不同的IP地址发起连接,你需要在实际框中定义它们-你不能欺骗IP地址,因为没有办法返回响应,如果TCP,它将永远无法完成三方握手。如果您定义了多个IP地址,那么您应该能够将连接绑定到特定的地址。我不介意机器是否需要多个IP地址。我不想欺骗其他机器的IP地址。如果机器绑定到多个地址,您能否指定要从哪个地址发起?如果是这样的话,怎么做?看看虚拟机。我认为您正在寻找的网络类型是“桥接”。这将允许您从同一台机器上运行多个操作系统,每个操作系统都有自己的IP地址。我需要它托管在同一个web应用程序中。我认为没有人会同意生成20个Windows实例,这样我们就可以有一个连接池。