これは、ncを使用したUnixのシンプルなエコーサーバーです。
mkfifo fifo
cat fifo | nc -k -l 4458 -v | cat >fifo
(これに基づく)
ご覧のとおり、データフローは次のように機能します。
fifo (my named pipe)
|
| (using cat)
|
v
nc
|
| (using cat)
|
v
fifo
そしてここに質問があります:なぜこれはうまくいかないのですか?
nc -k -l 4458 -v >fifo <fifo
あなたがしようとすることに気づくだろうtelnet
にlocalhost
に4458
あなたが得るエラーを「接続が拒否しました」。
cat myfifo | nc -k -l 4458 > myfifo
も動作します。テキストファイル、file.txtなどを使用する場合、nc -k -l 4458 < file.txt > file.txt
最初の接続は接続して閉じます(入力が切り捨てられ、EOFがソケットを閉じるので意味があります)、2番目の接続は忘れっぽいエコーサーバーになります。エコーされていない行をテキストファイルに保存します。