Comunicação unidirecional sobre UDP usando o Netcat

1

Eu tenho uma situação em que muitos dispositivos "inteligentes" estão me enviando dados via UDP. Não consigo alterar nada no final do envio.

Estou testando o nc (ou netcat), mas não consigo passar do seguinte:

Recebendo o comando final:

nc -l -u 8123

Teste enviando comando:

echo "test" | nc -u 127.0.0.1 8123

O primeiro pacote funciona bem, mas, em seguida, ambos os terminais parecem estar em algum tipo de suspensão e eu tenho que CTRL + C para tentar novamente. Uma vez que funcione, eu terei a extremidade de recebimento "continue ouvindo" (-k) e eu processarei os pacotes então

    
por Scott May 04.08.2016 / 03:32

3 respostas

1

A resposta, se surgir - aparentemente há algum problema com o netcat quando usado assim - a socat forneceu uma solução:

Receba:

socat -u udp4-recv:8123 - 

Enviar:

echo "test" | socat - udp4-sendto:127.0.0.1:8123
    
por 04.08.2016 / 10:11
1

lado do servidor: nc -ul 127.0.0.1 1234 - ouça a conexão udp na porta 1234

também: nc -l 1234

lado do cliente: nc -u 127.0.0.1 1234 - conecte usando o udp para 127.0.0.1, porta 1234

Agora digite algo no lado do cliente e você o verá no lado do servidor. (Você também pode digitar no lado do servidor e passará para o cliente.)

Quando você executa echo "test" | nc -u 127.0.0.1 8123 , o lado do servidor permanece como antes, mas agora a entrada padrão de nc no lado do cliente está vinculada ao descritor de canal. Quando você digita no teclado, não leva a lugar nenhum. nc está esperando pela entrada do pipe, e o pipe já enviou tudo o que tinha para enviar. Então agora nc está "congelado".

    
por 04.08.2016 / 12:29
1

De acordo com a página man, você precisa passar o -q0 flag para nc para fazer com que ele seja encerrado quando terminar.

    
por 22.11.2017 / 22:41

Tags