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

seb*_*110 1 java sockets

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

ServerSocket(侦听连接)

Client ---> ServerSocket(Client
connected) ServerSocket -> Client(Server 说:你好,我要送你到 124.51.85.147)
Client -> ServerSocket(Client Says: OK!)
Client - --> ServerSocket(124.51.85.147)(Client gets sent to a different server Socket)
ServerSocket(124.51.85.147) -> Client(Server2 say: Welcome!)
然后客户端留在 Server2(124.51.85.147)

这是否可能以任何方式。抱歉问了这么长的问题。

Ste*_*n C 5

这是否可能以任何方式。

不。

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

即使可以在 Java 级别(以某种方式)序列化Socket对象并将其发送到另一个程序(本地或远程),也不可能更改底层对话的 IP 地址;看上面。


历史脚注:很久以前(1980 年代)在一个遥远的国家(英国剑桥)有一个网络(剑桥环),其流协议 (BSP) 实现了一种称为“重新插入”的操作。如果 A 和 B 之间有 BSP 连接,B 和 C 之间有另一个 BSP 连接,那么 B 可以重新插入连接,以便 A 直接与 C 对话。参考:RM Needham 和 AJ Herbert 的“剑桥分布式计算机系统”(附件 C)。

我从未在其他地方看到过重新插入操作。事实上,如果你仔细想想,它需要复杂的 3 次握手才能可靠地实现类似重新插入的操作。在 BSP 案例中,他们没有这样做……至少根据 Needham & Herbert 中的描述。