erlang不同节点进程如何通讯的

           一个a节点,一个b节点,这两个节点是互通的。

            在a节点,创建一个c进程, b节点也创建一个d进程,c进程怎么发消息给d进程呢, 一般是   c !hao 在 b节点,但是  a节点收不到 hao这个消息。 c !hao  这样是给本节点发送消息,不是给 a节点发送消息的。如果要给a节点的进程发消息。

          通过这样来发送的 {Pid,Node} 这样才知道给某个节点发送消息的。

       如下:

 

C:\Users\Administrator>erl -sname le
Eshell V6.1  (abort with ^G)
(le@zhang)1> net_adm:ping('hao@zhang').
pong
(le@zhang)2> register(shell, self()).
true
(le@zhang)3>
receive {From,Msg} -> From ! {self(),"thanks"}, io:format("Msg:~p~n",[Msg]) end.

receive {From,Msg} -> From ! {self(),"thanks"}, io:format("Msg:~p~n",[Msg]) end.
ok
(le@zhang)4>
Msg:"hello!"
ok
(le@zhang)5> From.
<6015.52.0>
(le@zhang)6>

 

Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。

C:\Users\Administrator>erl -sname hao
Eshell V6.1  (abort with ^G)
(hao@zhang)1> {shell,'le@zhang'} ! {self(),hao}.
{<0.37.0>,hao}
(hao@zhang)2> {shell,'le@zhang'} ! {self(),hao}.
{<0.37.0>,hao}
(hao@zhang)3> {shell,le@zhang} ! {self(),hao}.
{<0.37.0>,hao}
(hao@zhang)4> nodes().
[le@zhang]
(hao@zhang)5> lists:foreach(fun(Node) -> {shell,Node} ! {self(),"hello!"} end, n
oes()).
** exception error: undefined shell command noes/0
(hao@zhang)6> lists:foreach(fun(Node) -> {shell,Node} ! {self(),"hello!"} end, n
odes()).
ok
(hao@zhang)7> From.
* 1: variable 'From' is unbound
(hao@zhang)8> lists:foreach(fun(Node) -> {shell,Node} ! {self(),"hello!"} end, n
odes()).
ok
(hao@zhang)9> receive R1 -> R1 end.
{<5892.37.0>,"thanks"}
(hao@zhang)10> receive R2 -> R2 end.
{<5892.37.0>,"thanks"}
(hao@zhang)11>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值