![将多个客户端连接到一个专用 TCP 服务器,该服务器每次只接受一个连接](https://linux22.com/image/756043/%E5%B0%86%E5%A4%9A%E4%B8%AA%E5%AE%A2%E6%88%B7%E7%AB%AF%E8%BF%9E%E6%8E%A5%E5%88%B0%E4%B8%80%E4%B8%AA%E4%B8%93%E7%94%A8%20TCP%20%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%8C%E8%AF%A5%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%AF%8F%E6%AC%A1%E5%8F%AA%E6%8E%A5%E5%8F%97%E4%B8%80%E4%B8%AA%E8%BF%9E%E6%8E%A5.png)
我有一台服务器和客户端 A 和 B。客户端 A 和 B 完全相同。目前,客户端 A 通过持久的长寿命 TCP 连接连接到服务器。目前,如果我想在客户端 A 中进行维护重启,我必须将其关闭并从客户端 B 建立新连接,然后在客户端 A 中进行维护。最后,一旦客户端 A 准备就绪,我断开客户端 B 的连接并从客户端 A 连接服务器。如果我想在不断开服务器的情况下进行主动-主动设置,如何实现?
请注意,这不是一个可以接受多个并发连接的服务器。这是一个为特殊目的编写的自定义服务器。它一次只能接受一个连接,我试图让多个客户端同时向服务器发送数据,而不会断开与服务器的连接。
我正在考虑在中间放置一个类似“jumpbox”的东西,其中“jumpbox”通过长寿命 TCP 连接连接到服务器。客户端 A 和 B 应该能够同时连接到“jumpbox”,并且两者都应该能够通过“jumpbox”将数据发送到服务器。在整个过程中,服务器和“jumpbox”之间的连接不应断开。这可能吗?
编辑:假设我在服务器中运行 nc -l 35000。我应该能够从客户端 A 和客户端 B 连接到服务器,这样 nc 35000。如果我在客户端 A 或客户端 B 上输入某些内容,它应该被发送到服务器
答案1
所有这些都基于服务器运行 Linux 的假设。我会使用中间盒与服务器建立连接,以便它“保持”连接。客户端 A 或 B 将通过 SSH 进入中间盒或“跳转盒”,并连接到屏幕控制台,其中有打开的会话。