"নেটওয়ার্ক প্রোগ্রামিং" এর তুলনায় যখন আমরা "সকেট প্রোগ্রামিং" সম্পর্কে কথা বলি তখন কি কোনও বড় পার্থক্য রয়েছে?
এমন কিছু বিষয় রয়েছে যা "নেটওয়ার্ক প্রোগ্রামিং" তবে "সকেট প্রোগ্রামিং" নয়?
"নেটওয়ার্ক প্রোগ্রামিং" এর তুলনায় যখন আমরা "সকেট প্রোগ্রামিং" সম্পর্কে কথা বলি তখন কি কোনও বড় পার্থক্য রয়েছে?
এমন কিছু বিষয় রয়েছে যা "নেটওয়ার্ক প্রোগ্রামিং" তবে "সকেট প্রোগ্রামিং" নয়?
উত্তর:
সকেট প্রোগ্রামিং (অন্তত শব্দটি সাধারণত ব্যবহৃত হয়) একটি নির্দিষ্ট নেটওয়ার্ক এপিআইতে প্রোগ্রামিং করছে। সকেটগুলি আইপি-ভিত্তিক প্রোটোকল সমর্থন করে (প্রাথমিকভাবে টিসিপি এবং ইউডিপি) 1 ।
অন্যান্য বিভিন্ন এপিআই ব্যবহার করে নেটওয়ার্ক প্রোগ্রামিং করা যেতে পারে। উইন্ডোজের ডাব্লু নেট * এবং নেট * ফাংশনগুলির মতো প্রচুর প্রোটোকল-স্বতন্ত্র এপিআই রয়েছে। উইন্ডোজের পুরানো সংস্করণগুলি নেটবিআইওএস / নেটবিইইউআই (নেটবিআইওএস এন্ড ইউজার ইন্টারফেস) ব্যবহার করেছে, এবং সর্বাধিক সমর্থিত (এবং সম্ভবত এখনও রয়েছে) আইপিএক্স / এসপিএক্স (একটি পুরানো নেটওয়্যার প্রোটোকল)।
তবে বর্তমানে বেশিরভাগ নেটওয়ার্ক প্রোগ্রামিং হয় হয় সরাসরি সকেট ব্যবহার করে, বা সকেটের উপরে বিভিন্ন স্তর ব্যবহার করে (যেমন, বেশিরভাগ এইচটিটিপি-র মাধ্যমে সম্পন্ন হয়, যা সাধারণত সকেটের উপরে টিসিপি দিয়ে প্রয়োগ করা হয়)। মূলত সকেট ইন্টারফেসের মাধ্যমে টিসিপি / আইপি এবং ইউডিপি / আইপি (পাশাপাশি বেশ কয়েকটি অন্যান্য আইপি-ভিত্তিক প্রোটোকল) সম্পন্ন হয়। তত্ত্ব অনুসারে, অন্যান্য প্রোগ্রামিং ইন্টারফেস ব্যবহার করা যেতে পারে, তবে অনুশীলনে সকেটগুলি যথেষ্ট বলে মনে হচ্ছে, তাই এটির প্রতিস্থাপনে খুব একটা আগ্রহ নেই। আমার অবশ্য উল্লেখ করা উচিত যে উইন্ডোজ সকেটে (উইনসক) বেশ কয়েকটি এক্সটেনশন রয়েছে যা উইন্ডোজ কম-বেশি অনন্য। আমি মনে করি যে এই এক্সটেনশানগুলি ব্যবহার করে এমন কোডগুলি "সকেট" কোড হিসাবে সত্যই যোগ্য কিনা সেগুলি কোনও যুক্তির জন্য উন্মুক্ত they এগুলি একই ধারণার উপর ভিত্তি করে এক্সটেনশন, তবে কোডগুলি তাদের ব্যবহার করে না ' টি অন্যান্য সিস্টেমে সাধারণত বহনযোগ্য। আমি অনুমান করি যে এটি "সকেট" হিসাবে যোগ্যতা অর্জন করে কিনা বা প্রাথমিকভাবে আপনি সকেটকে ধারণা হিসাবে বেশি মনে করেন কিনা, বা কোনও নির্দিষ্ট ফাংশন, প্যারামিটার ইত্যাদির উপর নির্ভর করে depends
সম্পাদনা (মন্তব্যের জবাবে):
"সকেট জানার" টিসিপি এবং ইউডিপি সম্পর্কে "সবকিছু" জেনে বোঝায় কিনা তা বলা কিছুটা শক্ত hard আসুন কেবলমাত্র একটি ছোট টুকরো বিবেচনা করুন: সকেটের জন্য একটি সাধারণ ডেমো প্রোগ্রাম একটি ক্লায়েন্ট / সার্ভার চ্যাট প্রোগ্রাম তৈরি করছে। ক্লায়েন্টটি সার্ভারের সাথে সংযোগ স্থাপন করে এবং যখন কোনও ক্লায়েন্টের ব্যবহারকারী কিছু টাইপ করেন, তখন এটি অন্য ক্লায়েন্টদের কাছে পাঠানো হয় যা একই সার্ভারের সাথে সংযুক্ত থাকে। প্রতিটি ক্লায়েন্ট সার্ভার থেকে যা আসে তা প্রদর্শন করে এবং ব্যবহারকারীকে অন্য ক্লায়েন্টদের কাছে বার্তাগুলি টাইপ করতে দেয়।
একই সময়ে, এআইএম, উইন্ডোজ মেসেঞ্জার, আইচ্যাট ইত্যাদির মতো একটি "বাস্তব" চ্যাট প্রোগ্রামের অন্তর্ভুক্তটি বিবেচনা করুন। কেবল পাঠ্যই নয়, ভয়েস, ভিডিও, ফাইল স্থানান্তর, গোষ্ঠী, তালিকাগুলি ইত্যাদি হ্যান্ডেল করতে একটি সাধারণ প্রোগ্রামে সম্ভবত এক ডজন বিভিন্ন স্ট্যান্ডার্ড জড়িত থাকে, যেমন এসআইপি, স্টুন, টার্ন, আরটিসিপি, আরটিপি, এক্সএএমপিপি, এমডিএনএস ইত্যাদি, ।
আইএমও, "সকেটগুলি জানেন" এমন কেউ যদি গবেষণা ফাইলগুলি (এবং এই জাতীয়) গবেষণা করে বেশি সময় ব্যয় না করে কয়েক ঘন্টার মধ্যে প্রথম (ডেমো-স্তর, কেবলমাত্র পাঠ্য) চ্যাট প্রোগ্রামটি কোড করতে সক্ষম হন। তারা যদি কোনও "আসল" চ্যাট প্রোগ্রামে কাজ করার জন্য কমপক্ষে কিছু পূর্ব অভিজ্ঞতা দাবি না করে তবে আমি তাদের কাছ থেকে এমনকি আরএফসি / মানগুলি এ জাতীয় জিনিসের ক্ষেত্রে কীভাবে প্রয়োগ করেছে তাও আশা করি না।
একই জিনিসটি সাধারণভাবে প্রযোজ্য: নেটওয়ার্কগুলিতে লোকেরা যে সমস্ত বিভিন্ন জিনিস প্রয়োগ করে তাদের উপর আরএফসি সংখ্যা (এবং অন্যান্য বিভিন্ন স্ট্যান্ডার্ড) প্রয়োগ করা হলেও, কেউ এই সমস্ত মুখস্ত করে নিয়েছে বলে আশা করা অযৌক্তিক নয়। তবুও, আপনার যদি এমন কোনও প্রয়োজনের একটি সেট থাকে যা আপনি "স্থানীয়" প্রোগ্রামে লোকেরা সহজেই পরিচালনা করতে পারবেন এমন প্রত্যাশা রাখেন, প্রয়োজন হিসাবে কেবল "নেটওয়ার্কের ওপরে" যোগ করা সাধারণভাবে একটি বিশাল পরিমাণের অসুবিধা না যুক্ত করা উচিত (যদিও নেটওয়ার্ক লেটেন্সি যেমন সমস্যাগুলি মোকাবেলা করতে পারে)।
ইউনিক্সের 1 সকেটগুলি ইউনিক্স-পরিবারের সকেটগুলিকে সমর্থন করে তবে এগুলি (অন্ততপক্ষে সাধারণত) নেটওয়ার্কিং নয়, ইন্ট্রা-মেশিন আইপিসির জন্য ব্যবহৃত হয়। আক্ষরিক অর্থে কয়েক হাজার অন্যান্য প্রোটোকল রয়েছে যেমন রাউটার পরিচালনার জন্য যা সকেটগুলি সত্যই সমর্থন করে না (কাঁচা সকেটের বাইরেও আপনি স্বেচ্ছাসেবী প্যাকেটগুলি তৈরি করতে এবং প্রেরণ করতে পারবেন)।
"নেটওয়ার্ক প্রোগ্রামিং" এর জন্য কিছু নেটওয়ার্কিং প্রযুক্তি প্রয়োজন হবে - উদাহরণস্বরূপ, আরপিসি। সকেট (সম্ভবত আপনি বিএসডি সকেট বোঝায়) এই জাতীয় প্রযুক্তির উদাহরণ। সুতরাং "সকেট প্রোগ্রামিং" "নেটওয়ার্ক প্রোগ্রামিং" এর একটি উপসেট set
হ্যাঁ, এটি সত্য যে নেটওয়ার্ক প্রোগ্রামিংয়ের জন্য নেটওয়ার্কিং প্রযুক্তি প্রয়োজন হয় অন্যদিকে সকেট প্রোগ্রামিং নেটওয়ার্ক প্রোগ্রামিংয়ের একটি উপসেট। বেশিরভাগ বর্তমান নেটওয়ার্ক প্রোগ্রামিং হয় হয় সরাসরি সকেট ব্যবহার করে, বা সকেটের উপরে বিভিন্ন স্তর ব্যবহার করে।