web-dev-qa-db-ja.com

ncを使用した双方向socat機能

これはどういうわけか関連する質問です https://superuser.com/questions/270698/how-is-it-called-when-listeningconnecting-two-sockets-and-exchanging-data-betw

テストセットアップでは、3つのターミナルウィンドウを開いて実行します

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に表示されます。パイプを双方向にするにはどうすればよいですか?可能であれば、一時ファイルなしで。

3
Ben

これは netcatのウィキペディアページ から直接来ています。 Term3では、次を実行します。

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

これはあなたが望むことをほぼ正確に行います。 FIFOを使用して、左側から右側に出力を戻します。厳密に言えば、一時ファイルではありません。FIFOは、2つのプロセス間の名前付きパイプです。

11
larsks