Tanpa -q
bendera instance Anda netcat
akan menunggu selamanya. Tidak ada pesan "end of stream" dengan UDP sehingga tidak ada cara untuk netcat
mengetahui 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 -q
bendera 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 timeout
atau 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 netcat
waktu mendengarkan dengan anggun. ( -w
Opsi batas waktu diabaikan, dan -q
tidak relevan.) Sesuatu seperti ini mungkin berguna dalam situasi praktis, sehingga netcat
terbunuh setelah 90 detik:
timeout 90 nc -u -l localhost 4300 # Window 1
nc -q 1 -u localhost 4300 </etc/group # Window 2
-q
.