请反对者发表你的理由,因为这对我来说不是很明显?
这是我的问题。我正在构建一个自动化程序,该程序通过 TCP 与远程服务器(可以将其视为聊天服务器或 MUD 游戏服务器)进行通信。当我的自动化程序正在执行其工作时,我想使用该服务的常规客户端连接到服务器。
从功能上讲,这需要我的本地机器上有一些“tee”或“多路复用器”或“代理”。它连接到远程服务器。两个本地客户端通过 TCP 连接到它。它需要将来自远程服务器的任何传入数据转发到所有本地客户端。它还需要将来自任何客户端的任何传出数据转发到远程服务器。
我不担心来自不同客户端的出站流量会交错,因为出站流量(客户端->服务器)是自发的,并且不太可能有多个客户端同时发送。
有这样的工具吗?从视觉上看,这就是我需要的:
更新
意识到可能很难找到适合我的情况的现有解决方案。我构建了一个允许多个 TCP 客户端共享到服务器的单个 TCP 连接的方案。服务器生成的流量被转发到所有客户端。任何客户端生成的流量都会转发到服务器。我托管它这里以防有人也需要它和/或想做出贡献。
它有什么用处?在许多情况下,我们希望编写程序来使用远程服务自动执行任务,但同时又想继续使用现有工具,该工具不提供自动化程序能够提供的功能,但提供了简单/熟悉的用户界面,这样您的自动化程序就不必这样做了。
用法
- 从命令行启动多路复用器
- 将客户端连接到 localhost:3333
- 在多路复用器命令行中,输入命令
connect <server> <port>
来连接将由所有客户端共享的远程服务。 - 您可以随时终止一个客户端,或者连接一个新客户端,而不会影响与远程服务器的连接。
以下是实际操作的演示。例如,在这种情况下,有两个 MUD 客户端共享与服务器的相同连接。假设两个客户端中的一个是可以自动化播放器的精简程序,但不提供人工干预的能力。另一个客户端是您可以与之交互的常规功能丰富的 MUD 客户端。
答案1
只需编写您需要的代码。预先构建的代码不起作用,因为您需要识别消息边界。否则,消息可能会交错,导致服务器无法理解它们。