Java - 是否可以将客户端发送到另一台服务器?

时间:2015-11-22 02:42:26

标签: java sockets

我正在使用java处理ServerSocket,我想知道,在客户端连接时,是否可以将Client / Socket发送到另一个ServerSocket。例如,客户端连接到123.41.67.817(只是一个随机IP),并且在连接时,客户端直接发送到例如带有端口的124.51.85.147(另一个随机IP)。所以会有一些关于会发生什么的地图。

ServerSocket(倾听连接)

客户---> ServerSocket(客户端连接)
ServerSocket - >客户(服务员说:您好,我将发送给您124.51.85.147)
客户 - > ServerSocket(客户说:好的!)
客户---> ServerSocket(124.51.85.147)(客户端被发送到不同的服务器Socket)
ServerSocket(124.51.85.147) - >客户端(Server2说:欢迎!)
然后客户端停留在Server2(124.51.85.147)上

这有可能以任何方式。很抱歉这个问题很长。

1 个答案:

答案 0 :(得分:4)

  

这是否可行。

没有

在最基本的层面上,TCP / IP连接是一对IP地址之间的对话。 TCP / IP协议中没有规定在中间会话中更改两个IP地址之一。

即使可以在Java级别(以某种方式)序列化Socket对象并将其发送到另一个程序(本地或远程),也无法更改基础对话的IP地址;见上文。

历史脚注:很久以前(1980年代)在一个遥远的国家(剑桥英国),有一个网络(剑桥环),其流协议(BSP)实施了一个名为&的操作#34;重新插上&#34 ;.如果您在A& A之间有BSP连接B和B和B之间的另一个C,然后B可以重新插入连接,以便A直接与C交谈。参考:"The Cambridge Distributed Computer System" by R.M. Needham & A.J Herbert(附件C)。

我从未见过其他地方的重新插手。实际上,如果你考虑一下,它需要一个复杂的三次握手来可靠地实现类似重新插入的操作。在BSP案例中,他们并没有这样做......至少根据Needham& amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp; amp;赫伯特。