Sans le -qdrapeau, votre instance netcatattendra pour toujours. Il n'y a pas de message de "fin de flux" avec UDP, donc il n'y a aucun moyen netcatde 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 -qdrapeau 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 timeoutni 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 netcattemps d' écoute avec élégance. (L' -woption de délai d'attente est ignorée et -qn'est pas pertinente.) Quelque chose comme cela pourrait être utile dans une situation pratique, de sorte que le netcatsoit 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.