एकाधिक क्लाइंट और कर्तव्य सर्वर के बीच मध्यवर्ती ब्रिज सर्वर के लिए यूडीपी के माध्यम से सत्रों का प्रबंधन कैसे करें? - लिनक्स, नेटवर्क प्रोग्रामिंग, udp

मुझे निम्नलिखित चित्र की तरह एक पुल बनाने की जरूरत है। यह सिर्फ एक यूडीपी सर्वर है जो ग्राहकों से पैकेट प्राप्त करता है, इसे बाद में दूसरे सर्वर पर प्राप्त करता है। परिदृश्य इस परिदृश्य से अच्छी तरह से समझा जाएगा।

+--------+sendto()  recvfrom()+-----------+
| client |------------------->|           |                         +-------------+
|        |        1           | bridge    |sendto()      recvfrom() |             |
|        |                    |           |------------------------>|    duty     |
|        |                    |           |           2             |   server    |
|        |                    |           |recvfrom()      sendto() | processing  |
|        |                    |           |<------------------------|             |
|        |recvfrom()  sendto()|           |            3            |             |
|        |<-------------------|           |                         +-------------+
+--------+         4          +-----------+

डेटा भेजने और प्राप्त करने के लिए यहां फ़ंक्शनडिवाइस के किनारे लिखे गए हैं। तीर संकेतों के तहत संचार प्रक्रियाओं को 1,2,3 और 4 संख्याओं द्वारा पहचाना जाता है। मैंने आंकड़े को इस तरह से आकर्षित करने की कोशिश की कि यह एक समय रेखा का प्रतिनिधित्व कर सके: ऊपर से नीचे तक।

अब बिंदु पर आओ।जब मेरे पास प्रबंधन करने के लिए केवल एक ग्राहक होता है, तो ऐसा करना बहुत आसान काम है। लेकिन आइए मान लें कि ग्राहक संख्या कई हो सकती है। मान लीजिए कि ग्राहक डायलर का उपयोग कर इंटरनेट से जुड़े फोन हैं और सर्वर एक एसआईपी सर्वर है जो एस्टेरिक / फ्रीस्विच या ऐसा कुछ चल रहा है। ऐसे परिदृश्य में कई ग्राहक उपस्थित हो सकते हैं। मैं पुल सर्वर का उपयोग प्रॉक्सी सर्वर (कैमेलीओ और आरटीपीपीआरसीई चलाने) के रूप में नहीं करना चाहता ताकि संचार कुशल हो सके।

क्षुद्रग्रह या एक एसआईपी सर्वर udp सत्र का प्रबंधन कर सकते हैंमुझे पता है। लेकिन पुल कैसे हो सकता है। चूंकि udp कोई सत्र नहीं रखता है मैं चौथे चरण को कैसे पूरा कर सकता हूं। मैं ग्राहक के लिए ड्यूटी सर्वर के उत्तर की पहचान कैसे कर सकता हूं? सत्रों को संभालने के लिए किस प्रकार का सॉफ़्टवेयर (निश्चित रूप से दक्षता के लिए हल्के वजन, और मुझे इसे लिखने की आवश्यकता है) लिखा जाना चाहिए। अगर कोई मुझे udp के माध्यम से सत्र प्रबंधन का विचार दे सकता है तो यह मेरे लिए बहुत उपयोगी होगा। मैंने बहुत कुछ खोजा लेकिन मुझे कोई उपयुक्त उत्तर नहीं मिला।

अग्रिम में धन्यवाद।

उत्तर:

उत्तर № 1 के लिए 1

यहां एक एल्गोरिदम है जिसका उपयोग मैंने टीसीपी / यूडीपी यातायात के लिए एक सामान्य प्रॉक्सी कार्यान्वयन पर किया था:

कार्यक्रम मॉड्यूल:

एक कनेक्शन निर्माता और एकाधिक प्रॉक्सी श्रमिक

वे स्वयं निहित धागे के रूप में लागू होते हैं।

बहे:

निर्माता मॉड्यूल स्वीकार करने के लिए जिम्मेदार है औरनए कनेक्शन संभाल लें। यह उस कार्यकर्ता के लिए प्रारंभिक डेटा को सूचित करता है और पास करता है जो उस बिंदु से सभी I / O पर उस बिंदु से संभाल लेगा, समानांतर में यह दूसरी तरफ से कनेक्शन खोल देगा (कार्यकर्ता में भी किया जा सकता है)।

कार्यकर्ता को एक कनेक्शन मिलेगा और इसके जीवन चक्र के दौरान इसके लिए ज़िम्मेदार होगा।

कुछ तकनीकी अंक:

एक यूडीपी कनेक्शन आईपी और पोर्ट (एसआरसी और डीईएसटी) द्वारा निर्धारित किया जाता है।

निर्माता सभी स्रोतों के संदेशों की प्रतीक्षा कर सकता है, जबकि कार्यकर्ता किसी विशिष्ट स्रोत से संदेशों की प्रतीक्षा कर सकता है (यूडीपी सॉकेट को बाध्य करके)।

प्रदर्शन के लिए, श्रमिकों की संख्या फिट होना चाहिएएक सिस्टम को कोर करता है और प्रत्येक को एसिंक सॉकेट को संभालने की अनुमति देता है। इसके अतिरिक्त, यदि कोई कर्मचारी कई सॉकेट को संभालता है, तो निर्माता / बॉस नए कनेक्शन वितरित करते समय श्रमिकों के बीच संतुलन को लोड करने के लिए एक एल्गोरिदम स्थापित करने की आवश्यकता होती है।


संबंधित सवाल
सबसे लोकप्रिय