有没有办法让 socat 在收到侦听器连接之前不打开目标连接?

有没有办法让 socat 在收到侦听器连接之前不打开目标连接?

我想将 socat 作为服务器运行 - 针对间歇性上升和下降的目标(云微服务环境)。

我希望 socat 进行侦听 - 并在获得侦听器连接时打开端口。 (socat 服务器)

我的问题是:有没有办法让 socat 在收到侦听器连接之前不打开目标连接?

答案1

如果我理解你的问题,这是默认的。第一个套接字打开并阻塞在监听中。仅当建立连接时,才会尝试第二个指定的连接。你可以测试一下。例如,在一个 shell 中监听端口 60127 并连接到端口 60128:

$ socat tcp-l:60127,reuseaddr tcp:localhost:60128

它会阻塞等待。在另一个 shell 中尝试连接:

$ telnet localhost 60127
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.

它失败了,原来的命令也失败了:

socat[30293] E connect(3, AF=2 127.0.0.1:60128, 16): Connection refused

但是,如果您重复第一个 socat,则在端口 60128 上添加另一个 socat:

$ socat tcp-l:60128,reuseaddr -

然后telnet就可以工作了。因此,显然第一个 socat 在需要时不会尝试第二个命名的连接。

相关内容