我最近开始学习Erlang,我正在尝试实现一个服务器-客户端示例程序。我创建了一个已注册的进程,我想从另一个进程向它发送数据。代码如下。
-module(mine).
-export([alice/0, bob/2, startAlice/0, startBob/1]).
alice() ->
receive
{message, BobNode} ->
io:fwrite("Alice got a message \n"),
BobNode ! message,
alice()
finished -> io:fwrite("Alice is finished\n")
end.
bob(0, AliceNode) ->
{alice, AliceNode} ! finished,
io:fwrite("Bob is finished\n");
bob(N, AliceNode) ->
{alice, AliceNode} ! {message, self()},
receive
message -> io:fwrite("Bob got a message ~w \n",[N])
end,
bob(N-1, AliceNode).
startAlice() ->
register(alice, spawn(mine, alice, [])).
startBob(AliceNode) ->
spawn(mine, bob, [30000, AliceNode]).
这里,我想从bob向alice发送一些值,比如N。bob(N, AliceNode)
函数中的{alice, AliceNode, Nvalue} ! {message, self(), N}
,但得到的错误变量'Nvalue'是未绑定的erl。我确信我在这里遗漏了一些琐碎的东西。任何帮助都将不胜感激。提前感谢。
1条答案
按热度按时间f87krz0w1#
参见变更代码:
我用过erlang:Erlang/OTP 23 [Erts-11.1.8] [源代码] [64位] [smp:4:4] [ds:4:4:10] [异步线程:1]
x一个一个一个一个x一个一个二个x
我认为发送和接收部分应该同步。
需求: