2013-06-04 21 views
6

İki düğümün birbirine senkronize mesaj gönderebileceği basit bir sohbet odası uygulamak istiyorum. Sunucu rolü oynayan bir düğüm yoktur.Başka bir düğüme nasıl bir mesaj gönderebilirim?

spawn(Node,Module,Fun,Args) işlevine göre bu düğümdeki işlemin pidine sahip olduğumda, başka bir düğüme ileti göndermek için ! kullanabilir miyim?

+0

Can Kullanırım "!" Uzak düğüm için bir mesaj göndermek için, eğer bu düğümdeki işlemin Pid'i "yumurtlama (Düğüm, Modül, Eğlence, Args)" fonksiyonu ile? –

+1

Evet, uzak mesaj göndermek sadece yerel olanları göndermek gibidir –

+0

Sadece tüm düğümlerin aynı çerezi kullandığından emin olmanız yeterlidir. – Kaos

cevap

13

Aynı düğümdeki yerel bir işlemle yapacağınız işlemleri başka bir düğüme gönderebilirsiniz. Hile elbette işlem kimliğine sahip olmanız gerekiyor. Ancak, başka bir düğüme kaydedilmiş bir işleme de, {RegisteredName, NodeName}, ör.

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

kendinize bir ileti gönderir.Nasıl sözdizimi düğümlerde çalışır. İlk kabuğunda

daha detaylı bir örneği

: İkinci kabuğunda

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 

: İlk kabuğunda

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> 

Ve yine:

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

Çok teşekkürler! Bunu daha yeni denedim, iyi çalıştı. Lütfen bana erlang'la ilgili kitaplar veya web siteleri gibi bilgiler verir misiniz? –

+4

@ Despicable.Me http://learnyousomeerlang.com/ Erlang hakkında çok iyi bir çevrimiçi kitap, ayrıca basılı bir versiyonu var. Aksi takdirde sadece Amazon'da kontrol edin. – rvirding

İlgili konular