socat encaminhando para vários endereços

4

Eu tenho um único fluxo de entrada de vídeo e gostaria de configurar vários processos para lidar com ele, cada um executando em seu próprio endereço. Depois de algumas leituras, parece que socat é uma maneira de fazer isso

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

Isso encaminha tudo para o endereço de destino, mas permite vincular apenas um destino. Existe uma maneira de ligar vários endereços de destino com socat? Se eu tentar várias ligações individuais, recebo um erro "endereço já em uso" nas ligações subsequentes. Eu não sou obrigado a usar socat, qualquer coisa que me permita copiar meu fluxo de entrada é bom, se alguém souber uma abordagem melhor. Obrigado.

    
por Shukri Adams 02.02.2018 / 16:57

1 resposta

1

Com base em meus comentários anteriores, acabei de testar essa solução [1] e ela funciona como esperado, se eu entendi suas necessidades:

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

Já deve haver processos em 1935 e 1936 antes do lançamento, caso contrário o socat da direita irá reclamar.

Esta ainda é uma solução muito frágil. Eu recomendaria tentar rotas alternativas, como um arquivo de cache temporário ou um pipe talvez.

[1] assim:

  • nc -l 127.0.0.1 1935 em um shell
  • nc -l 127.0.0.1 1936 em outro shell
  • o comando acima no terceiro shell
  • e depois em um quarto: echo "foobar" | nc 127.0.0.1 1934
  • e vejo "foobar" na saída no primeiro e no segundo shell.
por 05.02.2018 / 02:03