Erlang : Disallowed Nodes / Maybe Cookie question

六月ゝ 毕业季﹏ 提交于 2019-12-22 01:53:59

问题


Trying to get two erlang nodes talking to each other : one on a Ubuntu machine and one on Windows XP.

We're getting a "Connection attempt from disallowed node" message which prevents one node receiving messages from the other.

They're both using 5.XXX versions of Erlang OTP.

Both nodes have the same cookie ( .erlang.cookie)

We are starting the receiver node with :

erl -name fred@ipaddress

and calling the function on it with 'fred@ipaddress' (in single quotes)

We've turned firewalls off.

So what else may be preventing the connection?

Update : we're using erlang:get_cookie() to check the cookie on both nodes, and the values are different. So is this the problem. We think we're setting the cookie by putting the same .erlang.cookie file in the directory where we run erlang on both machines. But maybe this is the wrong place?

Update 2 : thanks for the answers everyone. We chose Ranok's as our answer because it worked well for us. I'm sure some of the alternative ways of setting the cookie would be fine too.


回答1:


Also, when you start the Erlang system, there is a commandline flag -setcookie which will let you specify the cookie at start time.

erl -name fred@ipaddress -setcookie FOOBAR

Hope that helps, Jacob




回答2:


Start off by checking each node's cookie. From the shell:

erlang:get_cookie().

If they are not the same, then change one of the node's cookies to match the other:

erlang:set_cookie(node(), "newcookie").

If everything works you need to see why the cookie setting is not being picked from the config file or command line arg.




回答3:


The Erlang cookie should be in the users directory. Not the application directory.

So yours is something like:

C:\Documents and Settings\InterstarUser\.erlang.cookie

You can see the location of HOME with the command env in the command line if I remember correctly from my Windows days.




回答4:


net_adm:ping()

try net_adm:ping() from both nodes.

http://www.erlang.org/documentation/doc-5.4.13/lib/kernel-2.10.13/doc/html/net_adm.html




回答5:


erlang:set_cookie(node(), 'newcookie').

not

erlang:set_cookie(node(), "newcookie").



回答6:


A couple of things come to mind:

  1. Have you tried setting the cookie via erlang:set_cookie on both nodes?
  2. If no .erlang.cookie file is found in the $HOME directory, one will be created. Could it be that one of the .erlang.cookie files is not in the right place on one machine? You could search your hard drives for the file and if you find more than the one you created, erlang might have put it there and is using it.


来源:https://stackoverflow.com/questions/451583/erlang-disallowed-nodes-maybe-cookie-question

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!