2013-06-04 7 views
6

मैं एक साधारण चैट रूम को कार्यान्वित करना चाहता हूं जिसमें दो नोड्स एक दूसरे को तुल्यकालिक संदेश भेज सकते हैं। एक नोड नहीं है जो सर्वर की भूमिका निभाता है।मैं किसी अन्य नोड को संदेश कैसे भेज सकता हूं?

क्या मैं का उपयोग किसी अन्य नोड को संदेश भेजने के लिए कर सकता हूं, अगर मेरे पास spawn(Node,Module,Fun,Args) के फ़ंक्शन द्वारा इस नोड पर प्रक्रिया का ढक्कन है?

+0

कर सकते हैं मैं उपयोग करता हूं "!" दूरदराज के नोड को एक संदेश भेजने के लिए, अगर मेरे पास इस नोड पर "स्पॉन (नोड, मॉड्यूल, मज़ा, Args)" के कार्य द्वारा प्रक्रिया की पिड है? –

+1

हां, दूरस्थ संदेश भेजना स्थानीय लोगों को भेजने जैसा है –

+0

आपको केवल यह सुनिश्चित करने की आवश्यकता है कि सभी नोड एक ही कुकी का उपयोग करें। – Kaos

उत्तर

13

आप अन्य नोड पर प्रक्रियाओं को उसी तरह भेज सकते हैं, जो आप एक ही नोड के लिए स्थानीय प्रक्रिया के साथ करेंगे। चाल निश्चित रूप से आपको प्रक्रिया आईडी होना चाहिए। लेकिन आप tuple {RegisteredName, NodeName}, आदि का उपयोग कर किसी अन्य नोड पर पंजीकृत प्रक्रिया को भी भेज सकते हैं।

register(a, self()), {a, node()} ! foo. 

स्वयं को एक संदेश भेजेगा। एक ही वाक्यविन्यास नोड्स में काम करता है।

एक अधिक विस्तृत उदाहरण

पहले खोल में:

erl -sname one 
Erlang R15B01 (erts-5.9.1) [source] [smp:8:8] [async-threads:0] [hipe] [kernel-poll:false] 

Eshell V5.9.1 (abort with ^G) 
[email protected])1> ([email protected])1> register(hello_server, self()). 
([email protected])2> 
true 

दूसरा खोल में:

erl -sname two 
Erlang R15B01 (erts-5.9.1) [source] [smp:8:8] [async-threads:0] [hipe] [kernel-poll:false] 

Eshell V5.9.1 (abort with ^G) 
[email protected])1> ([email protected])1> {hello_server, '[email protected]'} ! good_day. 
good_day 
([email protected])2> 

और फिर पहले खोल में:

([email protected])2> flush(). 
Shell got good_day 
ok 
+0

बहुत बहुत धन्यवाद! मैंने अभी कोशिश की, यह अच्छी तरह से काम किया। क्या आप मुझे एरलांग मास्टर करने के लिए किताबें या वेबसाइट जैसी कुछ जानकारी देंगे? –

+4

@ Despicable.Me http://learnyousomeerlang.com/ Erlang पर एक बहुत अच्छी ऑनलाइन पुस्तक है, एक मुद्रित संस्करण भी है। अन्यथा बस अमेज़ॅन पर जांचें। – rvirding

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

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