2012-09-27 17 views
5

मैं ज़ीरोएमक्यू (और सामान्य रूप से सॉकेट के साथ प्रोग्रामिंग) के लिए नया हूं, लेकिन ज़ीरोएमक्यू में एक पीयर-टू-पीयर मॉडल को लागू करने की कोशिश कर रहा हूं। मुझे क्या चाहिए जब एक नोड ऑनलाइन आता है, यह पूरे नेटवर्क पर प्रसारित करता है "मैं यहां हूं, और आप इस पते पर मेरे पास पहुंच सकते हैं: ..." संदेश।ज़ीरोमक पूरे नेटवर्क पर प्रसारित

मुझे लगता है कि यदि नेटवर्क पर 2 या अधिक नोड दिखाई देते हैं, तो वे एक दूसरे को एक ज्ञात एंडपॉइंट के माध्यम से बिना किसी खोज में पाएंगे।

क्या किसी के पास कोई विचार है कि मैं इसे कैसे प्राप्त कर सकता हूं? क्या यह ज़ीरोएमक्यू के साथ भी संभव है?

उत्तर

4

जो आप पूछ रहे हैं वह zmq के साथ नहीं किया जा सकता है। कोई तंत्र नहीं है (ज्ञात और परिभाषित अंतराल के बिना) जो आपको प्रकाशक ऑनलाइन आने पर 'पता' करने की अनुमति देता है और इसके संदेश सदस्यता लेने के लिए तैयार हैं।

कहा जा रहा है कि XPub and XSub राउटर (जिसे ज्ञात एंडपॉइंट की आवश्यकता है) का उपयोग करके इस तरह के कुछ सेट को सेट करना काफी मुश्किल है। आप अपना खुद का 'एंडपॉइंट' भी बना सकते हैं जो सभी क्लाइंट आरईक्यू/आरईपी सॉकेट का उपयोग करने के लिए कनेक्ट होते हैं। यह आपको एक केंद्रीय (अनिवार्य रूप से directory service) रखने की अनुमति देगा, जिससे आप पॉइंट से पॉइंट सब्सक्राइब/प्रिंट कनेक्शन को कनेक्ट कर सकते हैं (जो आपके नेटवर्क को डुप्लिकेशंस को सबसे कम रखेगा)।

0

आप यूडीपी के साथ इस तरह यह करने के लिए चाहते हो सकता है:

  1. सभी नोड्स नए लोगों के लिए एक निश्चित UDP पोर्ट को सुनने
  2. एक नए नोड यह नेटवर्क के लिए एक संदेश भेजता है यूडीपी ऊपर आता है (या यदि उपलब्ध हो तो प्रसारण करें) और अन्य सभी इसे अपनी उपस्थिति
  3. प्राप्त करते हैं अब आप संचार को आगे बढ़ाने के लिए निश्चित अंतराल यानी zmq का उपयोग कर सकते हैं।

एक सी उदाहरण आप https://github.com/stanwu/udp-broadcast

  • को देखने के लिए आप
  • 192.168.1.10 और 192.168.1.11 शुरुआत पर आईपी 192.168.1.10/11/12 साथ तीन मशीनों है, तो चाहते हो सकता है नहीं है ./udpServer
  • 192.168.1.12 पर चलाने ./udpClient 192.168.1.0 मैं-AM-यहाँ-192.168.1.12-पोर्ट-7777
  • अब 192.168.1.10/11 जानता है 192.168.1.12 कुछ चल रहा है पर एक नवागंतुक है श्रोता 7777
  • पर श्रोता
0

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

संबंधित मुद्दे