为什么我不能在Windows中启动一个命名的Erlang节点?

我试图在Windows XP Home中使用-sname选项来启动一个命名的Erlang节点,但是当我运行erl时,它会打印出一个很长的错误信息,我不明白,然后退出:

  > erl -sname allyourcode
 {error_logger,{{2009,5,25},{16,20,57}},“Protocol:〜p:register error:〜p〜n”,[“in
 et_tcp”,{{badmatch,{错误,ECONNREFUSED}},[{inet_tcp_dist,听,1},{net_kernel,S
 tart_protos,4},{net_kernel,start_protos,3},{net_kernel,init_node,2},{net_kernel,
 INIT,1},{gen_server,init_it,6},{proc_lib,init_p_do_apply,3}]}]}
 {error_logger,{{2009,5,25},{16,20,57}},crash_report,[[{initial_call,{net_kernel,
 INIT,[ 'Argument__1']}},{PID,},{registered_name,[]},{ERROR_INFO,{退出,{ER
 ROR,badarg},[{gen_server,init_it,6},{proc_lib,init_p_do_apply,3}]}},{祖先,[
 net_sup,kernel_sup,]},{消息,[]},{链接,[#端口,]},{dicti
 onary,[{longnames,假}]},{trap_exit,TRUE},{状态,运行},{heap_size,610},{ST
 ack_size,24},{减less,490}],[]]}
 {error_logger,{{2009,5,25},{16,20,57}},supervisor_report,[{主pipe,{本地,净
 _sup}},{errorContext,START_ERROR},{原因,{ '退出',nodistribution}},{罪犯,[{P
 ID,未定义},{名称,net_kernel},{MFA,{net_kernel,START_LINK,[[allyourcode,shortn
埃姆斯]}},{启动Restart_type,永久},{关机,2000},{CHILD_TYPE,工人}]}]}
 {error_logger,{{2009,5,25},{16,20,57}},supervisor_report,[{主pipe,{本地,KER
 nel_sup}},{errorContext,START_ERROR},{原因,关机},{罪犯,[{PID,未定义
 },{名称,net_sup},{MFA,{erl_distribution,START_LINK,[]}},{启动Restart_type,永久}
 {关机,无限},{CHILD_TYPE,监}]}]}
 {error_logger,{{2009,5,25},{16,20,57}},std_info,[{应用,内核},{退出,{S
 hutdown,{内核,启动,[正常,[]]}}},{型,永久}]}
 {“Kernel pid terminated”,application_controller,“{application_start_failure,kern
 EL,{关机,{内核,启动,[正常,[]]}}}“}

崩溃转储写入:erl_crash.dump
内核pid终止(application_controller)({application_start_failure,kerne
升,{关机,{内核,启动,[正常,[]]}}})

我想包含erl_crash.dump文件,但是我不知道这样做的好方法,因为它很长。

起初,我以为我遇到了防火墙问题,因为我第一次试图这样做,我的防火墙问我是否会允许我使用不同的程序, 但是,即使禁用了我的防火墙,我仍然有同样的问题。

使用名称,而不是似乎也帮助。

是的,你甚至可能需要重新启动你的操作系统 – 为了检查是否是真的,你也可以简单地启动一个不同名称的节点,通常最好使用完全限定的名字,比如:

erl -name rambo@127.0.0.1 -setcookie KILLER

然后,开始另一个使用:

erl -name terminator@127.0.0.1 -setcookie KILLER

并尝试ping其他节点:

net_adm:中国平安('rambo@127.0.0.1' )。

你应该得到一个'pong'的信息。

下次使用

节点()。

看到所有可见的节点。

我想你会发现你已经用这个名字开始了一个节点。 尝试关闭所有的Erlang控制台窗口,然后重试。

  1. 您需要确保您没有使用已经注册的名称(当然):这包括Erlang已经声明的任何名称。

  2. 如果你是在同一台机器上,但在不同的用户下,请确保你的cookies是一样的。