我正在使用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标识为walden
,但dns_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
- 但似乎我有点卡住了。我错过了什么或做了一些明显的错误吗?我的整个系统可能配置错误了吗?
答案 0 :(得分:1)
您需要将主机名传递给names
和dns_hostname
,而不是节点名称。看起来您的节点已经连接到我,因为当您运行nodes()
时,另一个节点会显示。