如何使用两个 netcat 写入和读取同一个文件?

如何使用两个 netcat 写入和读取同一个文件?

我想使用文件作为临时缓冲区来连接两个 netcat 进程。我需要使用缓冲区,因为数据在两端以不同的间隔发送和请求。我想使用文件而不是实际缓冲区,mkfifo因为数据通常会超过 64 kb。

这是我所拥有的,但它不起作用。文件从未被写入,或者至少,它没有以发布者进程可以读取的方式写入。

# receiver
while true; do nc -l 8000 > /tmp/my_file; done

# publisher
while true; do nc -l 9000 < /tmp/my_file; done

我向接收者发送如下文本:

echo "hello, world" | nc localhost 8000

我尝试从发布者的角度来阅读它,如下所示:

curl localhost:9000

但是curl返回“来自服务器的空回复”之类的错误,因为从未写入过“hello, world”。

我正在 Mac OS 中测试这个,但最终需要在 Linux(最有可能是 Alpine)中执行同样的事情。

答案1

在某些系统上,“nc”命令要求您在端口号前指定“-p”选项。尝试在 8000 和 9000 前添加“-p”,如下所示:

# receiver
while true; do nc -l -p 8000 > /tmp/my_file; done

# publisher
while true; do nc -l -p 9000 < /tmp/my_file; done

相关内容