socat stdin duplicado para cada cliente conectado

3

ncat (do nmap folk) tem uma ação padrão de duplicar qualquer entrada para todos os clientes conectados. Por exemplo:

Iniciar um servidor no terminal 1:

% mkfifo messages
% exec 8<>messages  # hold the fifo open
% ncat -l 5555 -k --send-only < messages

Iniciar clientes ouvindo nos terminais 2 & 3:

% nc localhost 5555

Envie algo para o fifo no terminal 4 e veja a mesma mensagem aparecer em todos os clientes conectados (terminais 2 e 3):

% printf 'Hello, clients.\n' > messages

Este mesmo padrão é possível com socat?

    
por whiteinge 13.04.2015 / 08:34

1 resposta

1

O que você quer fazer é, eu tenho medo, impossível. O mais próximo que você pode chegar é:

No terminal 1:

mkfifo messages
socat PIPE:messages TCP4-LISTEN:5555,fork

Nos terminais 2 e amp; 3:

nc localhost 5555

Em seguida, o texto enviado para messages aparecerá algumas vezes no terminal 2 e às vezes no terminal 3. Isso ocorre porque socat "consumirá" o texto em messages antes de disponibilizá-los pelo soquete aberto no localhost: 5555 Então, o primeiro processo netcat a acordar e ler a partir do socket receberá as mensagens e o outro não receberá nada.

    
por 17.05.2015 / 00:42

Tags