2012-12-06 30 views
2

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

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

erl -sname [email protected] 
erlang:set_cookie(node(),cookie). 

在另一个终端窗口I型:

erl -sname [email protected] 
erlang:set_cookie(node(),cookie). 

现在,如果I型在第一终端窗口下面的命令:

net_adm:ping([email protected]). 

我总是得到“false”的结果,这意味着两个节点无法互相连接。我不明白我在这里失去了什么...

+0

[Erlang nodes can not see other]可能的重复(http://stackoverflow.com/questions/3483471/erlang-nodes-cant-see-each-other) –

回答

1

肯定要确保'pc'是实际您的机器的主机名。如果不是,请确保您使用的是。

或者,由于您使用的是sname,并且两台主机都在同一台计算机上,因此您可以通过执行erl -sname user1erl -sname user2逃脱。

+0

您的答案解决了我的问题,谢谢: )但是,是不是可以使用与我的机器不同的主机名? – user1301428

+0

你确实可以,但是你需要确保你在@解析到适当的机器后所做的任何事情。例如,您可以执行IP地址([email protected])或放入hosts文件的主机名(user1 @ whatever_host_from_hosts_file_that_resolves_to_me)。 Erlang只需要能够找到目标主机。 – chops

0

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

0

的答案是,它看起来这主要是一个DNS问题。你应该更新它在/etc/hosts中如果你是一个基于Unix的操作系统,如果是在同一台机器上,你可以随时使用本地主机,这将是可达:在一个单独的

erl -sname [email protected] -cookie aloha 

然后终端:

erl -sname [email protected] -cookie aloha 

因此,你应该能够沟通节点就好。