Why can't I start a named Erlang node in Windows?

I'm trying to start a named Erlang node using the -sname option in Windows XP Home, but when I run erl, it prints out a long error message, which I don't understand, and quits:

>erl -sname allyourcode
{error_logger,{{2009,5,25},{16,20,57}},"Protocol: ~p: register error: ~p~n",["in
et_tcp",{{badmatch,{error,econnrefused}},[{inet_tcp_dist,listen,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,{exit,{er
ror,badarg},[{gen_server,init_it,6},{proc_lib,init_p_do_apply,3}]}},{ancestors,[
net_sup,kernel_sup,]},{messages,[]},{links,[#Port,]},{dicti
onary,[{longnames,false}]},{trap_exit,true},{status,running},{heap_size,610},{st
ack_size,24},{reductions,490}],[]]}
{error_logger,{{2009,5,25},{16,20,57}},supervisor_report,[{supervisor,{local,net
_sup}},{errorContext,start_error},{reason,{'EXIT',nodistribution}},{offender,[{p
id,undefined},{name,net_kernel},{mfa,{net_kernel,start_link,[[allyourcode,shortn
ames]]}},{restart_type,permanent},{shutdown,2000},{child_type,worker}]}]}
{error_logger,{{2009,5,25},{16,20,57}},supervisor_report,[{supervisor,{local,ker
nel_sup}},{errorContext,start_error},{reason,shutdown},{offender,[{pid,undefined
},{name,net_sup},{mfa,{erl_distribution,start_link,[]}},{restart_type,permanent}
,{shutdown,infinity},{child_type,supervisor}]}]}
{error_logger,{{2009,5,25},{16,20,57}},std_info,[{application,kernel},{exited,{s
hutdown,{kernel,start,[normal,[]]}}},{type,permanent}]}
{"Kernel pid terminated",application_controller,"{application_start_failure,kern
el,{shutdown,{kernel,start,[normal,[]]}}}"}

Crash dump was written to: erl_crash.dump
Kernel pid terminated (application_controller) ({application_start_failure,kerne
l,{shutdown,{kernel,start,[normal,[]]}}})

I'd like to include the erl_crash.dump file, but I don't know a good way to do that, because it's pretty long.

At first, I thought I was having a firewall issue, because the first time I tried to do this, my firewall asked if I would grant permission to different programs, which I did; however, even after disabling my firewall, I'm still having the same problem.

Using -name instead doesn't seem to help either.


Yes, you may even have to restart your OS - to check whether this is true, you could also simply start a node with a different name, also it is generally better to use a fully qualified name, such as:

erl -name rambo@127.0.0.1 -setcookie KILLER

Then, start another one using:

erl -name terminator@127.0.0.1 -setcookie KILLER

and try to ping the other node:

net_adm:ping('rambo@127.0.0.1').

You should get a 'pong' message.

Next use

nodes().

to see all visible nodes.


I think that you will find that you have started a node by that name already. Try shutting down all your Erlang console windows and try again.


  • You need to make sure you are not using an already registered name (of course): this includes any name already claimed by Erlang.

  • If you are starting on the same machine but under different user, make sure your cookies are the same.

  • 链接地址: http://www.djcxy.com/p/38264.html

    上一篇: 无法启动rabbitmq

    下一篇: 为什么我无法在Windows中启动一个指定的Erlang节点?