У меня есть один входящий видеопоток, и я хотел бы настроить несколько процессов для его обработки, каждый из которых работает по собственному адресу. После некоторого чтения кажется сокат это один из способов сделать это
socat TCP4-LISTEN:1934,fork,reuseaddr TCP4:someaddress:1935
Это перенаправляет все на целевой адрес, но позволяет привязать только одну цель. Есть ли способ связать несколько целевых адресов с помощью socat? Если я пробую несколько отдельных привязок, я получаю ошибку «адрес уже используется» при последующих привязках. Меня не заставляют использовать socat, все, что позволяет мне копировать мой входящий поток, хорошо, если кто-то знает лучший подход. Спасибо.
Основываясь на своих предыдущих комментариях, я только что протестировал это решение [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