Tanpa -qbendera instance Anda netcatakan menunggu selamanya. Tidak ada pesan "end of stream" dengan UDP sehingga tidak ada cara untuk netcatmengetahui bahwa stdin dan koneksi jaringan telah selesai.
Misalnya, menggunakan TCP / IP ini berfungsi seperti yang diharapkan:
nc -l localhost 4300 # Window 1
nc localhost 4300 </etc/group # Window 2
Tetapi seperti yang telah Anda tentukan, menggunakan UDP / IP ini tidak pernah berakhir:
nc -u -l localhost 4300 # Window 1
nc -u localhost 4300 </etc/group # Window 2
Di sinilah -qbendera masuk. Tapi sayangnya itu tidak menerima nilai 0. Itu juga tidak akan menerima nilai-nilai non-integer. Berikut ini adalah alternatif terbaik yang dapat saya tawarkan tanpa bantuan ke timeoutatau beberapa utilitas eksternal lainnya:
nc -u -l localhost 4300 # Window 1
nc -q 1 -u localhost 4300 </etc/group # Window 2
Bahkan di sini, tidak mungkin memiliki netcatwaktu mendengarkan dengan anggun. ( -wOpsi batas waktu diabaikan, dan -qtidak relevan.) Sesuatu seperti ini mungkin berguna dalam situasi praktis, sehingga netcatterbunuh setelah 90 detik:
timeout 90 nc -u -l localhost 4300 # Window 1
nc -q 1 -u localhost 4300 </etc/group # Window 2
-q.