Socat переадресация на несколько адресов

У меня есть один входящий видеопоток, и я хотел бы настроить несколько процессов для его обработки, каждый из которых работает по своему адресу. После некоторого чтения кажется, что socat - один из способов сделать это

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

Это перенаправляет все на целевой адрес, но позволяет мне связать только одну цель. Есть ли способ связать несколько целевых адресов с помощью socat? Если я пробую несколько отдельных привязок, я получаю ошибку "адрес уже используется" при последующих привязках. Я не обязан использовать socat, все, что позволяет мне копировать мой входящий поток, хорошо, если кто-нибудь знает лучший подход. Благодарю.

2 ответа

Решение

Основываясь на моих предыдущих комментариях, я только что протестировал это решение [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 в другой оболочке
  • команда выше в третьей оболочке
  • а затем в четвертом: echo "foobar" | nc 127.0.0.1 1934
  • и я вижу "foobar" в выводе в первой и второй оболочке.

Можете ли вы инициировать socat в пункте назначения (пунктах)?

Просто использовалsocat -d -d -b67108864 -U TCP4-LISTEN:65431,tcpwrap,tcpwrap-etc=.,reuseaddr,fork OPEN:filename

с hosts.allow в текущем каталоге, имеющим строку:socat: address address address address

-U меняет направление, чтобы сервер прослушивал.

socat TCP:server:65431 - |.......... в пункте назначения(ах).

Другие вопросы по тегам