Sem a -q
bandeira da sua instâncianetcat
irá esperar para sempre. Não há mensagem "fim do fluxo" com o UDP, portanto não há como netcat
saber que o stdin e a conexão de rede foram finalizados.
Por exemplo, usando TCP / IP, isso funciona conforme o esperado:
nc -l localhost 4300 # Window 1
nc localhost 4300 </etc/group # Window 2
Mas, como você determinou, o uso de UDP / IP nunca termina:
nc -u -l localhost 4300 # Window 1
nc -u localhost 4300 </etc/group # Window 2
É aqui que a -q
bandeira entra. Mas, infelizmente, ela não aceita um valor de 0
. Também não aceita valores não inteiros. Aqui está a melhor alternativa que posso oferecer sem recorrer a timeout
outro utilitário externo:
nc -u -l localhost 4300 # Window 1
nc -q 1 -u localhost 4300 </etc/group # Window 2
Mesmo aqui, não é possível ter o netcat
tempo de audição graciosamente. (A -w
opção de tempo limite é ignorada e -q
é irrelevante.) Algo assim pode ser útil em uma situação prática, de modo que a netcat
eliminação seja interrompida após 90 segundos:
timeout 90 nc -u -l localhost 4300 # Window 1
nc -q 1 -u localhost 4300 </etc/group # Window 2
-q
.