এই অন্যান্য উত্তরটিতে আপনার কাস্টম প্রোটোকল / সেটআপ থাকার বিষয়টি নিয়ে আলোচনা করা হয়েছে। আমি এটি পুনরাবৃত্তি করব না। আমি ধরে নিলাম আপনার নিজের সমাধানটি যা আপনি চান তা।
nc -k"একাধিক উত্স থেকে একাধিক ফাইলগুলি" পাওয়ার সেরা সরঞ্জাম নয় কারণ এটি বর্তমানের সমাপ্তির পরেই অন্য সংযোগের জন্য শুনবে। এর অর্থ এটি একাধিক ফাইল গ্রহণ করবে তবে একের পর এক সমান্তরালে নয়। আপনার "একাধিক উত্স" একে অপরকে অবরুদ্ধ করবে।
socatসঙ্গে reuseaddrএবং forkভাল হতে পারে।
ধারণার প্রমাণ হিসাবে আসুন আমাদের কাস্টম প্রোটোকল তৈরি করুন ( দ্রুত এবং নোংরা পথে)। একটি ফাইল এমন একটি স্ট্রিম হিসাবে স্থানান্তরিত হবে যা এতে অন্তর্ভুক্ত:
- ফাইলের নাম বা প্রাপ্তি পক্ষের ব্যবহারের পথ (নতুন লাইন ছাড়া);
\nবিভাজক হিসাবে একক নতুন লাইন ( , এলএফ, 0x0a);
- বাইনারি তথ্য;
- ফাইলের শেষে।
এটি প্রাপ্তির আদেশ:
socat TCP-LISTEN:50011,reuseaddr,fork SYSTEM:'read -r f && cat >"$f"'
(সম্পাদনা) এটি সর্বজনীন প্রাপ্ত কমান্ড যা ফাইলনাম থেকে ট্রিলিং \r(যদি থাকে তবে) পুরোপুরি প্রোটোকল-সম্মতিযুক্ত উইন্ডোজ ক্লায়েন্টদের সাথে কাজ করার জন্য কার্যকর নয়:
socat TCP-LISTEN:50011,reuseaddr,fork SYSTEM:'read -r f && f="${f%$(printf "\r")}" && cat >"$f"'
(সম্পাদনা এখানে শেষ হয়)।
একটি ফাইল পাঠাতে:
(echo "The new name.foo" && cat "./the file to send.bar") > /dev/tcp/192.168.22.33/50011
নোট:
50011 এটি একটি টিসিপি পোর্ট নম্বর, আপনি নিজের পছন্দটি চয়ন করতে পারেন;
192.168.22.33 সার্ভারের ঠিকানা, এটি আপনার সেটআপের সাথে মেলানোর জন্য পরিবর্তন করুন;
- আমি
/dev/tcp/…/…সিনট্যাক্স ব্যবহার করেছি যা ব্যাশে কাজ করে, ncআপনি চান / প্রয়োজন হলে পাইপ করুন ;
- ফাইলের নাম সংঘর্ষগুলি এখনও সমস্যা,
catএগুলি সমাধান করার জন্য আপনার কিছু স্ক্রিপ্টেড যুক্তি (প্লেইনের পরিবর্তে ) প্রয়োজন;
SYSTEMএর সীমাবদ্ধতা রয়েছে (দেখুন man socat); এটিতে কোনও বৃহত স্ক্রিপ্ট বডিটি পরিবর্তনের পরিবর্তে কোনও স্ক্রিপ্ট স্ক্রিপ্ট লিখুন এবং ফাইলটি চালান; আপনি তদন্ত করতে পারেন EXEC;
- আমাদের প্রোটোকল (দ্রুত এবং নোংরা হওয়া) কোনও ক্লায়েন্টকে ত্রুটিগুলি (যদি থাকে) বা সাফল্যের প্রতিবেদন করার কোনও সার্ভারের পক্ষে কোনও উপায় সরবরাহ করে না।
আমি এটি দেবিয়ান রিসিভার এবং উবুন্টু প্রেরকের সাথে পরীক্ষা করেছি। এক মুহুর্তে তিনটি পৃথক সংযোগ দুটি পৃথক আইপি ঠিকানা থেকে তিনটি পৃথক ফাইল স্থানান্তর করছিল। সমস্ত স্থানান্তর সম্পন্ন হওয়ার পরে, md5sumঅনুলিপিগুলি ( সম্ভবত সম্ভবত ) মূল হিসাবে একই কিনা তা যাচাই করতে ব্যবহৃত হত ; তারা ছিল.