web-dev-qa-db-ja.com

複数のアドレスへのsocat転送

着信ビデオストリームが1つあり、それを処理するために複数のプロセスをセットアップし、それぞれが独自のアドレスで実行します。いくつか読んだ後、それはsocatがこれを行う1つの方法のようです

socat TCP4-LISTEN:1934,fork,reuseaddr TCP4:someaddress:1935 

これですべてがターゲットアドレスに転送されますが、1つのターゲットのみをバインドできます。 socatで複数のターゲットアドレスをバインドする方法はありますか?複数の個別バインドを試行すると、後続のバインドで「アドレスはすでに使用されています」エラーが発生します。私はsocatの使用を強制されていません。誰かがより良いアプローチを知っていれば、着信ストリームをコピーできるものであれば何でもいいです。ありがとう。

4
Shukri Adams

以前のコメントに基づいて、私はこのソリューションをテストしました[1]。あなたのニーズを理解していれば、期待通りに機能します:

socat -u tcp4-listen:1934 - | tee >(socat - tcp4:127.0.0.1:1935) >(socat - tcp4:127.0.0.1:1936) > /dev/null

これを起動する前に、すでに1935年と1936年をリッスンしているプロセスがなければなりません。そうしないと、右側のsocatが文句を言うでしょう。

これはまだ非常に壊れやすいソリューションです。一時的なキャッシュファイルやパイプなど、別のルートを試すことをお勧めします。

[1]そのように:

  • nc -l 127.0.0.1 1935シェル
  • nc -l 127.0.0.1 1936別のシェル
  • 上記の3番目のシェルのコマンド
  • そして、4番目のもの:echo "foobar" | nc 127.0.0.1 1934
  • そして、最初と2番目のシェルの出力に「foobar」が表示されます。
4
Patrick Mevzek