我有一个传入的视频流,我想设置多个进程来处理它,每个进程都在自己的地址运行.经过一番阅读后,似乎socat就是这样做的一种方式
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年已经听过的流程,否则右边的社会会抱怨.
这仍然是一个非常脆弱的解决方案.我建议尝试替代路由,如临时缓存文件或管道.
[1]那样:
> nc -l 127.0.0.1 1935 in a shell>另一个shell中的nc -l 127.0.0.1 1936>上面第三个shell中的命令>然后在第四个:echo“foobar”| nc 127.0.0.1 1934>我确实在第一和第二个shell的输出中看到“foobar”.