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

标签 java sockets

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

ServerSocket(监听连接)

客户端---> ServerSocket(客户端连接)
ServerSocket -> Client(Server says: Hello, I am going you to send you to 124.51.85.147)
客户端 -> ServerSocket(客户端说:OK!)
Client ---> ServerSocket(124.51.85.147)(Client gets send to a different server Socket)
ServerSocket(124.51.85.147) -> Client(Server2 says: Welcome!)
然后客户端停留在Server2(124.51.85.147)

这有可能吗?很抱歉问了这么长的问题。

最佳答案

Is this possible in any way.

没有。

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

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


历史注脚:很久以前(1980 年代)在一个遥远的国家(英国剑桥),有一个网络(The Cambridge Ring),其流协议(protocol) (BSP) 实现了一种称为“replug”的操作。如果 A 和 B 之间有 BSP 连接,B 和 C 之间有另一个连接,则 B 可以重新插入连接,以便 A 直接与 C 对话。引用:"The Cambridge Distributed Computer System" by R.M. Needham & A.J Herbert (附件 C)。

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

关于Java - 是否可以将客户端发送到另一台服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33851059/

相关文章:

java - 如何将 Jmeter 响应数据转换为字节?如何将字节值存储到CSV文件中?

java - json 字符串中缺少对象名称

Java 连接到 FileZilla 服务器

python - BlueSocket 在连接到 Python Socket 套接字时说连接被拒绝

python - 通过不同的 TCP 端口回显通过 UDP 接收的消息

swift - 如何使用Swift查找免费的本地端口?

java - 计算输入中数字的幂

android - GCM : how to avoid throttling

java - 病毒扫描可以关闭 java TCP 套接字连接吗?

java - 在字节码层面,Java的Class.getEnumConstants()如何知道哪些类是枚举类?