nc 的双向 socat 功能

nc 的双向 socat 功能

这个问题与 https://superuser.com/questions/270698/how-is-it-called-when-listeningconnecting-two-sockets-and-exchanging-data-betw

在测试设置中,我打开了三个终端窗口,运行

Term1: "nc -l 55545"
Term2: "nc -l 55546"
Term3: "socat tcp:localhost:55545 tcp:localhost:55546"

Term1 的输入现在出现在 Term2 中,而 Term2 的输入也出现在 Term1 中。

这是所需的行为。如何仅使用 nc 来实现此行为?

当我跑进来

Term3: "nc localhost 55545 | nc localhost 55546"

然后 Term1 的输入出现在 Term2 中,但 Term2 的输入出现在 Term3 中。我怎样才能使管道双向?如果可能的话,不用临时文件。

答案1

这直接来自于维基百科上有关 netcat 的页面。在 Term3 中,您将运行:

mkfifo backpipe
nc localhost 55545 0<backpipe | nc localhost 55546 1>backpipe

这几乎就是你想要的。它使用 FIFO 将左侧的输出返回到右侧。严格来说,它不是临时文件——FIFO 是两个进程之间的命名管道。

相关内容