Sin la -q
bandera, su instancia netcat
esperará para siempre. No hay un mensaje de "fin de transmisión" con UDP, por lo que no hay forma de netcat
saber que tanto la conexión estándar como la conexión de red han finalizado.
Por ejemplo, usando TCP / IP esto funciona como se esperaba:
nc -l localhost 4300 # Window 1
nc localhost 4300 </etc/group # Window 2
Pero como ha determinado, usando UDP / IP esto nunca termina:
nc -u -l localhost 4300 # Window 1
nc -u localhost 4300 </etc/group # Window 2
Aquí es donde -q
entra la bandera. Pero desafortunadamente no acepta un valor de 0
. Tampoco aceptará valores no enteros. Aquí está la mejor alternativa que puedo ofrecer sin recurrir a ninguna timeout
otra utilidad externa:
nc -u -l localhost 4300 # Window 1
nc -q 1 -u localhost 4300 </etc/group # Window 2
Incluso aquí, no es posible tener el netcat
tiempo de escucha con gracia. (La -w
opción de tiempo de espera se ignora y -q
es irrelevante). Algo como esto podría ser útil en una situación práctica, de modo que netcat
se elimine después de 90 segundos:
timeout 90 nc -u -l localhost 4300 # Window 1
nc -q 1 -u localhost 4300 </etc/group # Window 2
-q
.