Sem a -qbandeira da sua instâncianetcat irá esperar para sempre. Não há mensagem "fim do fluxo" com o UDP, portanto não há como netcatsaber 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 -qbandeira 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 timeoutoutro 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 netcattempo de audição graciosamente. (A -wopção de tempo limite é ignorada e -qé irrelevante.) Algo assim pode ser útil em uma situação prática, de modo que a netcateliminaçã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.