1

我正在使用该net_adm模块,似乎无法与 localhost 节点一起工作。我的机器名为:

> hostname
walden

我启动了一些本地短名称节点:

> erl -sname one -setcookie monster      
Erlang R16B (erts-5.10.1) [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false]

Eshell V5.10.1  (abort with ^G)
(one@walden)1> 

> erl -sname two -setcookie monster
Erlang R16B (erts-5.10.1) [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false]

Eshell V5.10.1  (abort with ^G)
(two@walden)1> 

到目前为止,一切都很好。

(two@walden)1> net_adm:names().     
{ok,[{"two",63489},{"one",63491}]}
(two@walden)2> net_adm:localhost().
"walden"
(two@walden)3> net_adm:names().     
{ok,[{"two",63489},{"one",63491}]}

两个本地节点都已注册,但未连接,这是预期的。

(two@walden)4> nodes().
[]

返回节点one

(one@walden)1> net_adm:names(two). 
{error,nxdomain}
(one@walden)2> net_adm:names('two@walden'). 
{error,nxdomain}
(one@walden)3> net_adm:dns_hostname(two).
{error,two}
(one@walden)4> net_adm:dns_hostname(two@walden).
{error,two@walden}

Erlang 正确地将我的 localhost 识别为waldendns_hostname/1返回错误。回到two

(two@walden)5> net_adm:ping(one@walden).
pong
(two@walden)6> nodes().                 
[one@walden]

(one@walden)5> nodes().
[two@walden]

好吧,无赖。.hosts.erlang为 localhost 开发节点使用文件真的很方便——通过——net_adm:worlds/0但我似乎有点卡住了。我是否遗漏了什么或做错了什么?我的整个系统是否配置错误?

4

1 回答 1

1

您需要将主机名传递给namesand dns_hostname,而不是节点名。看起来你的节点已经连接到我了,因为另一个节点在你运行时出现了nodes()

于 2013-07-23T17:12:26.067 回答