有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java是否可以重新绑定已绑定的socket?

这就是我想做的:

+--------+                          +--------+
|        |                          |        |
| Server |---+                  +---| Client |
|        |   |                  |   |        |
+--------+   |                  |   +--------+
             |                  |
+--------+   |   +--------+     |   +--------+
|        |   |   |        |     |   |        |
| Server |---+---+  Proxy +-----+---+ Client |
|        |   |   |        |     |   |        |
+--------+   |   +--------+     |   +--------+
             |                  |
+--------+   |                  |   +--------+
|        |   |                  |   |        |
| Server |---+                  +---| Client |
|        |                          |        |
+--------+                          +--------+  

服务器将连接到代理服务器,然后客户端将连接代理服务器并请求重定向到其中一个连接的服务器。e、 g.客户端1希望重定向到服务器3。我的问题是,一旦连接了一个客户端,我就想把它恢复到另一个服务器上。一旦绑定socket,就不能将其反弹。这有什么关系吗


共 (2) 个答案

  1. # 1 楼答案

    根据socket API的假设,您是正确的,连接在关闭之前保持绑定状态

    你的两个选择是

    1. 在客户端和服务器中编写一个元协议,以建立一个虚拟连接,该连接使用多个套接字来模拟跨多个服务器的持久连接(硬连接)
    2. 有一个智能代理,可以根据需要终止客户端套接字并连接到服务器,并假装它不在其他端点上(根据代理服务的不同,不那么困难或已经为您完成了)
  2. # 2 楼答案

    我会一直支持代理<->;客户端连接已关闭。如果需要连接到另一台服务器,只需关闭代理<->;服务器1连接并创建另一个代理<->;服务器2。这样,客户端就不必断开连接,与另一台服务器的重新连接将是无缝的