在测试设置中,我打开了三个终端窗口,运行
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 是两个进程之间的命名管道。