2012-08-31 11 views
7

क्या एक कनेक्टेड एरलांग नोड का आईपी पता प्राप्त करने का कोई आसान तरीका है? मैं कुछ नोड्स के साथ एक एससीटीपी कनेक्शन शुरू करना चाहता हूं और जिस तरह से सिस्टम इंजीनियर है, उसके बारे में ज्ञान सिर्फ उनके नोड() परमाणु है।मैं एर्लंग नोड का आईपी पता कैसे प्राप्त करूं?

अधिक सटीक, मैं सोच रहा हूं कि एरलांग (या कुछ व्युत्पन्न तकनीक) द्वारा प्रदान की गई कुछ एपीआई है जो इसके पहचानकर्ता परमाणु() को दिए गए नोड के आईपी पते को प्राप्त करने की अनुमति देती है।

उत्तर

4

आप एक विदेशी नोड पर समारोह कॉल करने के लिए RPC मॉड्यूल का उपयोग कर सकते हैं

उदाहरण:

rpc:call(Node,inet,getif,[]) 

ध्यान दें: नोड्स पर यह केवल काम करता है कि पहले से ही erlang वितरण के माध्यम से जुड़े हुए हैं

2

मैंने नोड पर एक प्रक्रिया शुरू करके इस समस्या को हल किया और प्रक्रिया को अपने आईपी पते वाले संदेश भेज दिया। अगर कोई और अधिक सुरुचिपूर्ण समाधान के बारे में जानता है, तो मैं इसे सुनना चाहता हूं।

आदेश जो मैं नोड पर प्रक्रिया के बाद पता प्राप्त करता था वह था: inet:getif()। ध्यान रखें कि उस कमांड के परिणाम में लूप-बैक एड्रेस शामिल है।

कुछ विचार करना है कि प्रत्येक नोड में कई आईपी पते हो सकते हैं और एससीटीपी सर्वर उन सभी पर नहीं सुन सकता है।

अन्य विचार जो मैंने कोशिश करने के बारे में सोचा था, वह नोड() से एक स्ट्रिंग में लौटाए गए परमाणु को परिवर्तित करना था, मेजबाननाम प्राप्त करने के लिए स्ट्रिंग को पार्स करना और DNS लुकअप करना था। यह काम कर सकता है, लेकिन मैंने कभी कोशिश नहीं की है। DNS लुकअप का नतीजा कैश किया जाना चाहिए, इसलिए नेटवर्क राउंड ट्रिप नहीं हो सकता है। इसके अलावा, मैं वास्तव में नोड() से परमाणु रिटर्न के बारे में कुछ भी मानने से नफरत करता हूं।

+0

हाँ, मैंने ऐसा करने के बारे में सोचा था, लेकिन मुझे यह जानने के बीच का समय कम करना था कि मुझे डेटा भेजने की आवश्यकता है, और डेटा की वास्तविक प्रेषण, और अतिरिक्त बैक-एंड-साइड चक्र अंतिम उपाय होगा। – matehat

2

यह net_kernel:nodes_info() जैसा दिखता है - सभी नोड्स के लिए - और net_kernel:node_info(Node) एक नोड के लिए - यह जानकारी है, और अधिक, हालांकि ऐसा लगता है कि यह मैन पेज में प्रकाशित नहीं है। यह कुछ तरीकों से एक बेहतर समाधान की तरह प्रतीत होता है क्योंकि यह जावा और सी नोड्स जैसी चीजों के साथ भी काम करेगा जो आप कार्यों को नहीं भेज सकते हैं।

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