分布式是erlang的三大特性之一,都说erlang分布式,最简单最直接的应用就是节点通讯。
问题来了,怎么节点通讯,节点连接可能很多人知道,如何在两个节点连接后进行本地与远程通信?这就是本篇所讲的内容。
下面是示例代码,完成2个节点的通讯:
A节点的代码:
-module(server_demo).
-export([start/0, rpc_call/2]).
start() ->
Pid = spawn(fun() -> server_loop() end),
register(demo, Pid), %%注册进程名字
ok.
server_loop() ->
receive
{msg, Pid, Msg} ->
io:format("receive msg ~p from pid ~p~n",[Msg, Pid]);
{rpc, Pid, Msg} ->
io:format("receive rpc ~p from pid ~p~n",[Msg, Pid])
end,
server_loop().
rpc_call(Pid, Msg) ->
demo ! {rpc, Pid, Msg}.
启动A节点:
erl -s server_demo start -hidden -name server@127.0.0.1 -setcookie 123456
-module(client_demo).
-export([start/0]).
start() -&