无法获得两个Erlang节点进行通信

时间:2012-12-06 22:26:54

标签: erlang distributed distributed-computing

无论我尝试什么,我都无法获得两个不同的节点进行通信。这可能是一个非常简单的问题需要解决。

我创建了.cookie.erlang文件,并将其放入我的主目录。然后我打开一个终端窗口并输入以下命令:

erl -sname user1@pc
erlang:set_cookie(node(),cookie).

在另一个终端窗口中,我输入:

erl -sname user2@pc
erlang:set_cookie(node(),cookie).

现在,如果我在第一个终端窗口中输入以下命令:

net_adm:ping(user2@pc).

我总是得到“假”,这意味着两个节点无法相互连接。我不明白我在这里缺少什么...

3 个答案:

答案 0 :(得分:1)

一定要确保'pc'是您计算机的实际主机名。如果不是,请确保您正在使用它。

或者,由于您使用sname并且两台主机都在同一台计算机上,因此您可以放心地执行erl -sname user1erl -sname user2

答案 1 :(得分:0)

这是一个DNS问题,请参阅here,这是类似问题的答案

答案 2 :(得分:0)

是的,它主要是DNS问题。如果您使用的是基于Unix的操作系统,则应在 / etc / hosts 中更新它,如果它位于同一台计算机上,您始终可以使用 localhost 来访问:< / p>

erl -sname a@localhost -cookie aloha

然后在另一个终端:

erl -sname b@localhost -cookie aloha

有了这个,你应该能够正常地传达节点。