尝试让两个erlang节点相互通信:一个在Ubuntu机器上,另一个在Windows XP上。
我们收到“来自不允许的节点的连接尝试”消息,该消息阻止一个节点从另一个节点接收消息。
他们都使用5.XXX版本的Erlang OTP。
两个节点都有相同的cookie(.erlang.cookie)
我们正在启动接收器节点:
erl -name fred@ipaddress
并使用'fred @ ipaddress'(单引号)调用其上的函数
我们关闭了防火墙。
那么还有什么阻止连接?
更新:我们使用erlang:get_cookie()检查两个节点上的cookie,值不同。这就是问题所在。我们认为我们通过将相同的.erlang.cookie文件放在我们在两台机器上运行erlang的目录中来设置cookie。但也许这是错误的地方?
更新2:感谢所有人的答案。我们选择Ranok作为我们的答案,因为它对我们很有用。我确信一些设置cookie的替代方法也可以。
答案 0 :(得分:12)
此外,当你启动Erlang系统时,会有一个命令行标志-setcookie
,它允许你在开始时指定cookie。
erl -name fred@ipaddress -setcookie FOOBAR
希望有所帮助, 雅各布
答案 1 :(得分:5)
首先检查每个节点的cookie。来自shell:
erlang:get_cookie().
如果它们不相同,则更改其中一个节点的cookie以匹配另一个:
erlang:set_cookie(node(), "newcookie").
如果一切正常,您需要了解为什么没有从配置文件或命令行arg中选择cookie设置。
答案 2 :(得分:3)
Erlang cookie应该在users目录中。不是应用程序目录。
所以你的是:
C:\Documents and Settings\InterstarUser\.erlang.cookie
如果我在Windows时间内记得正确的话,您可以在命令行中使用命令env
查看HOME的位置。
答案 3 :(得分:2)
<强> net_adm:平()强>
从两个节点尝试net_adm:ping()。
http://www.erlang.org/documentation/doc-5.4.13/lib/kernel-2.10.13/doc/html/net_adm.html
答案 4 :(得分:2)
erlang:set_cookie(node(), 'newcookie').
不
erlang:set_cookie(node(), "newcookie").
答案 5 :(得分:1)
有几件事情浮现在脑海中: