Erlang ping节点问题

10

我在Erlang shell里面编写了以下代码:

1> node().
nonode@nohost

但是

2> net_adm:ping(node()). 
pang

为什么?出了什么问题?为什么不是pong?

谢谢。

3个回答

15

您没有使用 -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

1
在我的情况下,没有net_adm包。 - weima
@weima 你看过这个问题吗?(https://stackoverflow.com/questions/59219351) - toraritte

3

我不是100%确定,但你启动了erl而没有使用“-name”或“-sname”。我相信net_adm:ping/1只在分布式模式下工作。


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

查看文档

(保留HTML)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接