একই খোলা সকেটের উপর অসিঙ্ক্রোনাস মাল্টি-ডাইরেক্ট সার্ভার-ক্লায়েন্ট যোগাযোগ?

আমার একটি ক্লায়েন্ট-সার্ভার অ্যাপ্লিকেশন আছে যেখানে ক্লায়েন্ট একটি উইন্ডোজ মোবাইল 6 ডিভাইসে থাকে, যা C ++ এ লেখা থাকে এবং সার্ভার সম্পূর্ণ উইন্ডোতে থাকে এবং C# এ লেখা হয়।

মূলত, কেবল ক্লায়েন্ট থেকে সার্ভারে বার্তা প্রেরণ করার জন্য এটি কেবলমাত্র প্রয়োজন, সার্ভারের সাথে কেবলমাত্র একটি স্বীকারোক্তি পাঠিয়েছে যে এটি বার্তা পেয়েছে এখন, আমি এটি আপডেট করতে চাই যাতে সার্ভারটি ক্লায়েন্টকে আসলে ডেটা অনুরোধ করার জন্য একটি বার্তা পাঠাতে পারে। যেহেতু আমি বর্তমানে এটি সেট আপ তাই ক্লায়েন্ট সার্ভারে তথ্য পাঠানোর পরে শুধুমাত্র মোড প্রাপ্তি হয়, এটি সার্ভার যে কোনো সময়ে একটি অনুরোধ পাঠানোর জন্য অনুমতি দেয় না। ক্লায়েন্টের ডেটা দেখার জন্য আমাকে অপেক্ষা করতে হবে। আমার প্রথম চিন্তার একটি পৃথক খোলা সকেট সঙ্গে ক্লায়েন্ট অন্য থ্রেড তৈরি করতে হবে, সার্ভার অনুরোধ শোনা ... ঠিক যেমন সার্ভার ইতিমধ্যে ক্লায়েন্ট সম্মান আছে। একই থ্রেডের মধ্যে কোনও উপায় আছে কি, একই সকেট ব্যবহার করে, কোনও সময়ে অনুরোধ পাঠানোর জন্য সমস্ত সার্ভারে?

আপনি এর প্রতিক্রিয়া সম্পর্কে কিছু ব্যবহার করতে পারেন WaitForMultipleObjects() এবং এটি একটি গ্রহণ বাফার পাস এবং একটি ইভেন্ট যা বলে যে তথ্য পাঠানো হবে?

0

4 উত্তর

সি ++ এ ক্লায়েন্ট সার্ভারে অসিঙ্ক্রোনাস বিট যুক্ত করতে চান কিনা তা আমি স্পষ্ট নই।

যদি আপনি সি ++ এ এটি করার বিষয়ে কথা বলেন, ডেস্কটপ উইন্ডোজ প্ল্যাটফর্মগুলি অ্যাটাকেড I / O ব্যবহার করে যে এপিআই এর মাধ্যমে সকেট I / O এসিনক্রোনাস করতে পারে সকেটগুলির জন্য, WSASend, WSARecv উভয়কেইসিঙ্ক I / O (তাদের LPOVERLAPPED প্যারামিটারে ডকুমেন্টেশনটি পড়ার অনুমতি দেয়, যা আপনি যে ইভেন্টগুলির সাথে I / O সমাপ্তি সেট করে সেট করতে পারেন)।

উইন্ডোজ মোবাইল প্ল্যাটফর্ম এই ফাংশন সমর্থন করে যদি আমি জানি না, তাই আপনি কিছু অতিরিক্ত digging করতে হতে পারে।

0
যোগ

এসআইও দেখুন এটি একটি ক্রস কম্প্যাটিবল সি ++ লাইব্রেরি যা অ্যাসনিক্রোনেস আইও এর জন্য। আমি সার্ভারের জন্য দরকারী (আমি একটি সি # প্রকল্পে একটি আদর্শ সি + + DLL লিঙ্ক করার চেষ্টা করা হয়নি) কিন্তু ক্লায়েন্ট জন্য এটি দরকারী হবে যদি আমি নিশ্চিত নই।

আমরা এটি আমাদের অ্যাপ্লিকেশন দিয়ে ব্যবহার করি, এবং এটি আমাদের আইও সমবয়স সমস্যার অধিকাংশ সমাধান।

0
যোগ

যখন আমি ক্লায়েন্ট-সার্ভার মডেলের সাথে একটি অ্যাপ্লিকেশন লিখতে চাই যেখানে ক্লায়েন্ট চলে যায় এবং যখনই তারা চাইলে প্রবেশ করতে পারে, (আমি মনে করি এটি আপনার অ্যাপ্লিকেশনের ক্ষেত্রেও যেহেতু আপনি মোবাইল ডিভাইসগুলি ব্যবহার করেন) আমি নিশ্চিত করে যে ক্লায়েন্টরা অনলাইন বার্তাটি সার্ভারে নির্দেশ করে, তারা তাদের সাথে সংযুক্ত এবং তারা যা করতে চেয়েছিল তা করার জন্য প্রস্তুত ছিল।

সেই সময়ে সার্ভারটি ক্লায়েন্টের ট্রলি একই খোলা সংযোগে ফেরত পাঠাতে পারে।

এছাড়াও, কিন্তু আমি জানি না যে এটি আপনার জন্য প্রযোজ্য কিনা, আমি কোন ধরণের হৃদস্পন্দন ক্লায়েন্ট সার্ভারে প্রেরণ করেছি, এটি জানাতে এটি এখনও অনলাইন। এই ভাবে সার্ভার যখন ক্লায়েন্টকে জোরপূর্বক নেটওয়ার্ক থেকে সংযোগ বিচ্ছিন্ন করে দেয় এবং এটি অফলাইনে হিসাবে সেই ক্লায়েন্টকে চিহ্নিত করে।

0
যোগ

এসিনক্রোনাস যোগাযোগ ব্যবহার একক থ্রেডে সম্পূর্ণভাবে সম্ভব!

There is a common design pattern in network software development called the reactor pattern (look at this book). Some well known network library provides an implementation of this pattern (look at ACE).

সংক্ষিপ্তভাবে, চুল্লী একটি বস্তু, আপনি ভিতরে আপনার সমস্ত সকেট রেজিস্টার, এবং আপনি কিছু জন্য অপেক্ষা করুন। যদি কিছু ঘটে (নতুন তথ্য এসেছে, সংযোগ বন্ধ ...) তাহলে চুল্লী আপনাকে সূচিত করবে। এবং অবশ্যই, আপনি এসিনক্রোনাসভাবে তথ্য পাঠাতে ও গ্রহণ করতে শুধুমাত্র এক সকেট ব্যবহার করতে পারেন।

0
যোগ