socat は接続された各クライアントに標準入力をコピーします。

socat は接続された各クライアントに標準入力をコピーします。

ncat(nmap folkの)には、すべての入力を接続されているすべてのクライアントにコピーするきちんとしたデフォルトの動作があります。たとえば、

ターミナル1でサーバーを起動します。

% mkfifo messages
% exec 8<>messages  # hold the fifo open
% ncat -l 5555 -k --send-only < messages

端末 2 と 3 でクライアントのリスニングを開始します。

% nc localhost 5555

ターミナル4のfifoに何かを印刷し、接続されているすべてのクライアント(ターミナル2と3)に同じメッセージが表示されていることを確認してください。

% printf 'Hello, clients.\n' > messages

socatと同じパターンを採用することは可能ですか?

修正する:Philippeのソリューションスクリーンショット:

ここに画像の説明を入力してください。

ベストアンサー1

あなたがしたいことはおそらく不可能です。最も近い方法は次のとおりです。

第1ターミナル:

mkfifo messages
socat PIPE:messages TCP4-LISTEN:5555,fork

ターミナル2と3から:

nc localhost 5555

その時送った文字はmessages2番ターミナルに現れることもあり、3番ターミナルに現れる時もある。これは、localhost:5555で開かれたソケットを介して提供される前にsocatテキストが「消費」されるためです。その後、目覚めてソケットからメッセージを読み取るmessages最初のプロセスはメッセージを受け取り、他のプロセスは何も取得しません。netcat

おすすめ記事