2

我知道如何发送消息,但接收功能让我很困扰。

broadcast(Message) ->
    Nodes  = nodes(),
    gen_server:cast(aname, {broadcast, Message, Nodes}).

handle_cast({broadcast, Message, Nodes}, State) ->
    lists:map(fun(x) -> {aname, X} ! Message end, Nodes).

我应该如何接收来自其他节点的消息?

4

3 回答 3

2

在函数!中接收使用操作符发送到 gen_server 进程的消息:handle_info

handle_info(Message, State) ->
    %% do something with Message here
    {noreply, State}.

这与消息是否从另一个节点发送无关。

于 2013-06-05T11:42:49.100 回答
2

gen_server:cast/3 或 gen_server:multi_call/3

于 2013-06-08T06:26:48.003 回答
1

如果您想在不同节点上转换为许多已注册的 gen_server:s,请使用 gen_server:abcast/2 或 gen_server:abcast/3 如果您想解决其中的一些问题。至于接收,如果您从本地或远程节点获取消息,如果您在消息中不包含任何可用于确定发送者的内容,则没有明显的区别。

于 2013-06-05T09:03:41.260 回答