【发布时间】:2019-07-14 02:14:08
【问题描述】:
我用 erlang shell 制作的:
1> node().
nonode@nohost
但是
2> net_adm:ping(node()).
pang
为什么?什么问题?为什么不用乒乓球?
谢谢。
【问题讨论】:
我用 erlang shell 制作的:
1> node().
nonode@nohost
但是
2> net_adm:ping(node()).
pang
为什么?什么问题?为什么不用乒乓球?
谢谢。
【问题讨论】:
你没有用-name或-sname启动Erlang,这意味着分发子系统没有启动。试试这个:
$ 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
【讨论】:
net_adm 包
我不是 100% 确定,但是您在没有“-name”或“-sname”的情况下启动了 erl。我相信 net_adm:ping/1 只能在分布式模式下工作。
【讨论】:
如果您尝试 ping 一个 erlang 节点但得到一个 pang。
用erlang:get_cookie()检查cookie,它将是一些随机字符串,用erlang:set_cookie(Node, Cookie)设置另一个节点的cookie,或者你可以将cookie传递给标志-setcookie
例如:
(foo@earth) erlang:get_cookie().
ASYRQKVNIFHWIIJQZIYN
(foo@earth) erlang:set_cookie(node(), 'secret cookie').
true
net:ping('mongooseim@localhost').
pong
查看docs
【讨论】: