Estou tentando enviar dados UDP de um host linux para outro usando o utilitário netcat.
A saída do terminal no lado do servidor
$ nc -uvkl 1234
Listening on [0.0.0.0] (family 0, port 1234)
XXXXConnection closed, listening again.
Xlorem ipsum
Connection closed, listening again.
E no lado do cliente
$ cat input.txt| nc -uvq 1 10.0.0.3 1234
Connection to 10.0.0.3 1234 port [udp/*] succeeded!
$ cat input.txt| nc -uvq 1 10.0.0.3 1234
Quando tento conectar pela segunda vez, não há saída nem mensagens de erro.
De acordo com o manual -k, é ativada a opção keepalive no socket . Então, por que isso está acontecendo?
Eu encontrei este link . Mas parece que não funciona.
Servidor
niloy@niloy-Vostro-3900:~$ netcat -kluvw1 localhost 9000
Listening on [localhost] (family 0, port 9000)
XXXall
Connection closed, listening again.
Cliente
echo -e "all" | nc -vvuw 1 localhost 9000
Connection to localhost 9000 port [udp/*] succeeded!
niloy@niloy-Vostro-3900:~$ echo -e "the" | nc -vvuw 1 localhost 9000
O objetivo final é executar um experimento Mininet. Suponha que eu tenha 10 hosts, com o intervalo 10.0.0.0/24. Amont eles, 2 são servidores (digamos h1 e h2), enquanto o resto são clientes. Os servidores devem estar ouvindo em 2 portas cada (digamos 8000 e 9000) até eu matá-los manualmente. Eu quero que os clientes enviem pequenas quantidades (~ 20KB) de dados UDP para o servidor e, em seguida, saiam imediatamente. Cada cliente deve fazer isso várias vezes em uma janela de 30 segundos.
Qualquer ajuda nesse sentido é muito apreciada.
Tags command-line netcat linux udp