首先给出服务器基本代码:
-module(server1).
-compile(export_all).
loop() ->
receive
{From,{store,Key,Value}} ->
put(Key, {ok, Value}),
From ! {server1,true},
loop();
{From,{ge,Key}} ->
From ! {server1,get(Key)},
loop()
end.
start() -> register(server1,spawn(fun() -> loop() end)).
store(Key,Value) -> rpc({store,Key,Value}).
gg(Key) -> rpc({ge,Key}).
rpc(Q) ->
server1 ! {self(),Q},
receive
{server1,A} ->
A
end.
1.在本机上创建2个不同的节点,节点间利用自带的rpc:call()函数进行通讯
我们可以看出,我们使用erl -sname name的方式创建了2个节点,一个叫pp,一个叫faker,然后pp调用rpc:call()函数调用了faker的函数,实现了不同节点的通信。
2.在同一个局域网内2个节点通讯
我们可以看出,我们这里使用的是-name,而不是-sname,如果我们要在2太不同的电脑上进行2个节点间的通信应该用-name而不是-sname,而且我们这里也加入了-setcookie参数,若2个节点的cookie不同,是无法进行通信了,这也增加了安全性。