প্রথমে কিছু ব্যাকগ্রাউন্ড
nc
আপনি এনসি (1) - লিনাক্স ম্যান পেজ বা এনসি (1) বিএসডি জেনারেল কমান্ড ম্যানুয়ালটি স্থানান্তর করার পরে সংযোগটি বন্ধ করতে হবে, এর বিভিন্ন সংস্করণ রয়েছে । উভয় লিঙ্কযুক্ত সাইটে একটি উদাহরণ দেওয়া আছে:
একটি নির্দিষ্ট বন্দরে শুনতে এনসি ব্যবহার করে শুরু করুন, কোনও ফাইলে আউটপুট আটকানো সহ:
$ nc -l 1234 > filename.out
একটি দ্বিতীয় মেশিন ব্যবহার করে, শ্রবণ এনসি প্রক্রিয়াতে সংযুক্ত করুন, এটিকে যে ফাইলটি স্থানান্তর করতে হবে তা খাওয়ান:
$ nc host.example.com 1234 < filename.in
ফাইল স্থানান্তরিত হওয়ার পরে, সংযোগটি স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যাবে।
তোমার netcat
, হস্তান্তর পর সংযোগ বন্ধ না তাই এটা এক (গুলি) উপরে বর্ণিত থেকে আলাদা। এটি ডেবিয়ান জেসির উপর আমার, নেটক্যাট ১.১০ এর মতো আচরণ করে। এই আচরণটি /usr/share/doc/netcat-traditional/README.gz
(আমার মেশিনে) নথিভুক্ত করা হয়েছে , সাহসী হওয়া আমার:
সহজ ব্যবহারে, "এনসি হোস্ট পোর্ট" প্রদত্ত টার্গেট হোস্টের প্রদত্ত বন্দরের সাথে একটি টিসিপি সংযোগ তৈরি করে। তারপরে আপনার স্ট্যান্ডার্ড ইনপুটটি হোস্টকে প্রেরণ করা হবে এবং সংযোগ জুড়ে ফিরে আসা কোনও কিছুই আপনার স্ট্যান্ডার্ড আউটপুটে প্রেরণ করা হবে। এটি অনির্দিষ্টকালের জন্য অব্যাহত থাকবে, যতক্ষণ না সংযোগের নেটওয়ার্ক দিকটি বন্ধ হয়ে যায়। মনে রাখবেন যে এই আচরণটি অন্যান্য বেশিরভাগ অ্যাপ্লিকেশন থেকে পৃথক, যা সবকিছু বন্ধ করে দেয় এবং স্ট্যান্ডার্ড ইনপুট-এ-ফাইলের পরে প্রস্থান করে।
এই আচরণের পিছনে যুক্তি এখানে:
আপনি জিজ্ঞাসা করতে পারেন "কেন স্বেচ্ছাচারী বন্দরগুলির সাথে সংযোগ রাখতে কেবল টেলনেট ব্যবহার করবেন না?" বৈধ প্রশ্ন এবং এখানে কিছু কারণ রয়েছে। টেলনেটের "স্ট্যান্ডার্ড ইনপুট ইওএফ" সমস্যা রয়েছে, তাই নেটওয়ার্ক আউটপুট শেষ হওয়ার জন্য ড্রাইভিং স্ক্রিপ্টগুলিতে অবশ্যই গণনা করতে বিলম্ব প্রবর্তন করতে হবে। নেটওয়ার্কের দিকটি বন্ধ না হওয়া পর্যন্ত নেটকাট চালিয়ে যাওয়া এই মূল কারণ ।
উইকিপিডিয়ায় বিভিন্ন বাস্তবায়নের একটি রান-ডাউন রয়েছে । যদিও আমি পার্থক্যের নাম বলতে পারি না। অন্য কেউ পারে?
এখন, সমাধান
1
nc
ফাইলটি পড়ার পরে আপনি প্রস্থান করতে বলতে পারেন। এই বিকল্পটি দরকারী:
-q seconds after EOF on stdin, wait the specified number of seconds
and then quit. If seconds is negative, wait forever.
যদি আপনি এই আদেশটি প্রেরণ শেষে ব্যবহার করেন:
nc -q 0 MachineIP Port < test.txt
nc
ইওএফ পড়ার পরে 0 সেকেন্ড ছেড়ে যাবে, এটি ফাইলটি শেষ হওয়ার ঠিক পরে। এটি তখন প্রস্থান করবে এবং গ্রহণের সমাপ্তি ঘটবে nc
।
যদি আপনি অবাক হন যে প্যাকেটগুলি অতিক্রম না করে তবে কি হয়, এখানে জুরাজের একটি মন্তব্য।
যখন সমস্ত প্যাকেটগুলি জুড়ে না আসে, সিস্টেম এটি সনাক্ত করে এবং অ্যাপ্লিকেশনটিকে লক্ষ্য না করে এগুলি পুনঃপ্রেরণ করবে (বা যদি সম্ভব না হয় তবে অ্যাপ্লিকেশন সময়সীমা ত্রুটি পাবে)। নির্ভরযোগ্য ডেলিভারি হ'ল ওএস কার্নেল দ্বারা সরবরাহিত টিসিপি প্রোটোকলের উদ্দেশ্য, যা nc
ব্যবহার করে। আপনি ইউডিপি প্রোটোকলকে অনুরোধ করতে পারেন যা এটি না করে, এটি ব্যবহার করে nc -u
তবে এটি কেস নয়।
2
পূর্বোক্তটিতে একটি মূল উদাহরণ রয়েছে README.gz
, যা -w
সময়সীমার উপর ভিত্তি করে তৈরি হয় -q
এবং আপনার প্রয়োগে উপস্থিত থাকার বিকল্পের প্রয়োজন হয় না ।
নেটক্যাটটি একটি সাধারণ ডেটা ট্রান্সফার এজেন্ট হিসাবে ব্যবহার করা যেতে পারে, এবং এটি আসলে কোনও বিষয় নয় যে শ্রোতা কোনটি এবং কোনটি ক্লায়েন্ট হয় - একদিকে ইনপুট অন্যদিকে আউটপুট হিসাবে উপস্থিত হয়। শ্রোতাদের প্রাপ্ত সময়টিতে নির্দিষ্ট সময়সীমা নির্ধারণ না করে শুরু করা সহায়ক, এবং তারপরে প্রেরণকারীকে একটি ছোট সময়সীমা দিন। এইভাবে শ্রোতা আপনার সাথে যোগাযোগ না করা অবধি শুনতে থাকে এবং ডেটা প্রবাহ বন্ধ হওয়ার পরে ক্লায়েন্ট সময় শেষ হয়ে যায়, বন্ধ হয়ে যায় এবং শ্রোতাকে সাথে রাখে। মধ্যস্থতাকারী নেটওয়ার্ক সমস্যা দ্বারা পরিপূর্ণ না হলে এটি পুরোপুরি নির্ভরযোগ্য হওয়া উচিত এবং আপনি সর্বদা সময়সীমা বাড়াতে পারেন। "আরশ" কোনও কিছুর একটি আদর্শ উদাহরণ প্রায়শই ব্যবহৃত হয়: একদিকে,
nc -l -p 1234 | uncompress -c | tar xvfp -
এবং তারপরে অন্যদিকে
tar cfp - /some/dir | compress -c | nc -w 3 othermachine 1234
.rhosts ফাইল, ব্যবহারকারীর অ্যাকাউন্ট, বা উভয় প্রান্তে ইনটডি কনফিগারেশন নিয়ে চিন্তা না করে কোনও ডিরেক্টরি থেকে অন্য মেশিনে ডিরেক্টরিগুলির সামগ্রী স্থানান্তরিত করে।