问题
I made in erlang shell:
1> node().
nonode@nohost
But
2> net_adm:ping(node()).
pang
Why? What's problem? Why not pong?
Thank you.
回答1:
You didn't start Erlang with -name
or -sname
, which means that the distribution subsystem was not started. Try this:
$ erl -sname mynode
Erlang R14B02 (erts-5.8.3) [source] [64-bit] [smp:2:2] [rq:2] [async-threads:0] [hipe] [kernel-poll:false]
Eshell V5.8.3 (abort with ^G)
(mynode@foobar)1> node().
mynode@foobar
(mynode@foobar)2> net_adm:ping(node()).
pong
回答2:
I am not 100% sure, but You started erl without "-name" oder "-sname". I believe net_adm:ping/1 only works in a distributed mode.
回答3:
If you are trying to ping an erlang node but getting a pang
.
Check the cookie with erlang:get_cookie()
it will be some random string set the cookie of another node with erlang:set_cookie(Node, Cookie)
or you could pass the cookie to the flag -setcookie
for example:
(foo@earth) erlang:get_cookie().
ASYRQKVNIFHWIIJQZIYN
(foo@earth) erlang:set_cookie(node(), 'secret cookie').
true
net:ping('mongooseim@localhost').
pong
Check out the docs
来源:https://stackoverflow.com/questions/5539525/erlang-ping-node-problem