0

我正在尝试实现一个非常简单的示例来初步了解Distributed Erlang。所以,我在同一台机器上启动两个节点:

erl -sname dilbert
erl -sname dogbert

任务是使用简单的 on nodedogbert进行dilbert输出。我认为使用'shell 会很容易:Hello, World!fun () -> io:format("Hello, World!") enddilbertdogbert

(dogbert@centraldogma.fubar)1> spawn(dilbert, fun () -> io:format("HELLO!") end).
<0.39.0>

=ERROR REPORT==== 13-Jun-2012::17:49:04 ===
** Can not start erlang:apply,[#Fun<erl_eval.20.82930912>,[]] on dilbert **

在同一个 shell 中,使用nodes().输出[]。好吧,dogbert显然不知道dilbert,但为什么会这样呢?或者,我如何让分布式 erlang 中的节点相互了解?

4

1 回答 1

4

有两个问题:

  1. 您必须为两个节点设置一个通用 cookie,以便它们可以交互。

    erl -sname dilbert -setcookie pointyhairedboss
    erl -sname dogbert -setcookie pointyhairedboss

  2. 您必须指定要连接的节点的主机名。spawn('dogbert@yourhostname', fun () -> io:format("HELLO!") end)。

于 2012-06-13T16:30:37.320 回答