-q
পতাকা ছাড়া আপনার উদাহরণ netcat
চিরকাল অপেক্ষা করবে। ইউডিপির সাথে কোনও "স্ট্রিমের শেষ" বার্তা নেই তাই স্টিডিন এবং নেটওয়ার্ক সংযোগ netcat
উভয়ই শেষ হয়ে গেছে তা জানার উপায় নেই ।
উদাহরণস্বরূপ, টিসিপি / আইপি ব্যবহার করা এটি প্রত্যাশার মতো কাজ করে:
nc -l localhost 4300 # Window 1
nc localhost 4300 </etc/group # Window 2
তবে আপনি যেমন স্থির করেছেন, ইউডিপি / আইপি ব্যবহার করে এটি কখনই শেষ হয় না:
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
অপ্রাসঙ্গিক।) এই ভালো কিছু, বাস্তবসম্মত অবস্থায় ব্যবহারের হতে পারে, যাতে netcat
90 সেকেন্ড পর নিহত হয়:
timeout 90 nc -u -l localhost 4300 # Window 1
nc -q 1 -u localhost 4300 </etc/group # Window 2
-q
।