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