无论我尝试什么,我都无法获得两个不同的节点进行通信。这可能是一个非常简单的问题需要解决。
我创建了.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).
我总是得到“假”,这意味着两个节点无法相互连接。我不明白我在这里缺少什么...
答案 0 :(得分:1)
一定要确保'pc'是您计算机的实际主机名。如果不是,请确保您正在使用它。
或者,由于您使用sname并且两台主机都在同一台计算机上,因此您可以放心地执行erl -sname user1
和erl -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
有了这个,你应该能够正常地传达节点。