-qフラグがないと、のインスタンスはnetcat永久に待機します。UDPには「ストリームの終わり」メッセージがないためnetcat、stdinとネットワーク接続の両方が終了したことを知る方法はありません。
たとえば、TCP / IPを使用すると、これは期待どおりに機能します。
nc -l localhost 4300                     # Window 1
nc localhost 4300 </etc/group            # Window 2
しかし、あなたが決定したように、UDP / IPを使用すると、これは決して終わりません:
nc -u -l localhost 4300                  # Window 1
nc -u localhost 4300 </etc/group         # Window 2
これが-qフラグの出番です。しかし、残念ながらそれはの値を受け入れません0。また、整数以外の値も受け入れません。ここに私が頼ることなく、timeoutまたは他のいくつかの外部ユーティリティなしで提供できる最良の選択肢があります:
nc -u -l localhost 4300                  # Window 1
nc -q 1 -u localhost 4300 </etc/group    # Window 2
ここでも、netcat優雅にリスニングタイムアウトを行うことはできません。(-wタイムアウトオプションは無視され、-q無関係です。)このようなものは実際の状況で役立つ場合があるため、netcat90秒後にが強制終了されます。
timeout 90 nc -u -l localhost 4300       # Window 1
nc -q 1 -u localhost 4300 </etc/group    # Window 2
               
              
-q。