Sans le -q
drapeau, votre instance netcat
attendra pour toujours. Il n'y a pas de message de "fin de flux" avec UDP, donc il n'y a aucun moyen netcat
de savoir que stdin et la connexion réseau sont terminés.
Par exemple, en utilisant TCP / IP, cela fonctionne comme prévu:
nc -l localhost 4300 # Window 1
nc localhost 4300 </etc/group # Window 2
Mais comme vous l'avez déterminé, en utilisant UDP / IP, cela ne finit jamais:
nc -u -l localhost 4300 # Window 1
nc -u localhost 4300 </etc/group # Window 2
C'est là que le -q
drapeau entre en jeu. Mais malheureusement, il n'accepte pas une valeur de 0
. Il n'accepte pas non plus les valeurs non entières. Voici la meilleure alternative que je puisse offrir sans recours timeout
ni autre utilité externe:
nc -u -l localhost 4300 # Window 1
nc -q 1 -u localhost 4300 </etc/group # Window 2
Même ici, il n'est pas possible de prolonger le netcat
temps d' écoute avec élégance. (L' -w
option de délai d'attente est ignorée et -q
n'est pas pertinente.) Quelque chose comme cela pourrait être utile dans une situation pratique, de sorte que le netcat
soit tué après 90 secondes:
timeout 90 nc -u -l localhost 4300 # Window 1
nc -q 1 -u localhost 4300 </etc/group # Window 2
-q
.