关于Erlang中启动节点的问题

born_killer 2008-11-19 11:05:33
想通过Windows的命令行启动一个Erlang节点,命令如下:
c:\erl -name mynode -setcookie abc无法成功,系统返回错误信息如下:
{error_logger,{{2008,11,19},{23,1,4}},"Can't set long node name!\nPlease check y
our configuration\n",[]}
{error_logger,{{2008,11,19},{23,1,4}},crash_report,[[{pid,<0.20.0>},{registered_
name,net_kernel},{error_info,{exit,{error,badarg},[{gen_server,init_it,6},{proc_
lib,init_p_do_apply,3}]}},{initial_call,{net_kernel,init,['Argument__1']}},{ance
stors,[net_sup,kernel_sup,<0.8.0>]},{messages,[]},{links,[<0.17.0>]},{dictionary
,[{longnames,true}]},{trap_exit,true},{status,running},{heap_size,987},{stack_si
ze,23},{reductions,1715}],[]]}
{error_logger,{{2008,11,19},{23,1,4}},supervisor_report,[{supervisor,{local,net_
sup}},{errorContext,start_error},{reason,{'EXIT',nodistribution}},{offender,[{pi
d,undefined},{name,net_kernel},{mfa,{net_kernel,start_link,[[mynode,longnames]]}
},{restart_type,permanent},{shutdown,2000},{child_type,worker}]}]}
{error_logger,{{2008,11,19},{23,1,4}},supervisor_report,[{supervisor,{local,kern
el_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,{{2008,11,19},{23,1,4}},crash_report,[[{pid,<0.7.0>},{registered_n
ame,[]},{error_info,{exit,{shutdown,{kernel,start,[normal,[]]}},[{application_ma
ster,init,4},{proc_lib,init_p_do_apply,3}]}},{initial_call,{application_master,i
nit,['Argument__1','Argument__2','Argument__3','Argument__4']}},{ancestors,[<0.6
.0>]},{messages,[{'EXIT',<0.8.0>,normal}]},{links,[<0.6.0>,<0.5.0>]},{dictionary
,[]},{trap_exit,true},{status,running},{heap_size,233},{stack_size,23},{reductio
ns,123}],[]]}
{error_logger,{{2008,11,19},{23,1,4}},std_info,[{application,kernel},{exited,{sh
utdown,{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,[]]}}})

请问怎么回事,怎样解决问题?不知是不是和WINDOWS有关
另:erl -sname mynode(用参数-sname)可以成功

初学Erlang,请高手指教:)
...全文
1112 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
byhsh 2010-11-27
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 chasn 的回复:]
windows下
erl -name mynode@127.0.0.1 -setcookie abc
erl -name mynode@本机IP -setcookie abc

或者来个自动的批处理

@FOR /F "tokens=3 delims=/ " %%i in ('netsh interface ip show address ^| find "IP"') @do @SET……
[/Quote]

我的怎么用 erl -sname mynode 不行,返回楼主一样的错误提示
tearsofphoenix 2009-09-19
  • 打赏
  • 举报
回复
学习了。
chasn 2009-08-21
  • 打赏
  • 举报
回复
windows下
erl -name mynode@127.0.0.1 -setcookie abc
erl -name mynode@本机IP -setcookie abc

或者来个自动的批处理

@FOR /F "tokens=3 delims=/ " %%i in ('netsh interface ip show address ^| find "IP"') @do @SET LAN_IP=%%i
@echo IP %LAN_IP%
erl -name mynode@%LAN_IP% -setcookie abc
blooney 2009-02-20
  • 打赏
  • 举报
回复
没错,要域名,linux下比较方便,哈
岑子哥 2008-12-26
  • 打赏
  • 举报
回复
我还没有学到这呢。lz真快啊
erlangwangzi 2008-12-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 CUG122032 的回复:]
c:\erl -sname mynode -setcookie abc
这样试试呢?
[/Quote]
短名方式
born_killer 2008-11-20
  • 打赏
  • 举报
回复
CUG122032,那样是可以的,谢谢!

这个问题已经解决了。

原因是我的主机没有域名,因此只能用-sname,也就是短名的形式来启动节点。

我的解决方法是,在本机上装了个2003 Server的虚拟机,建立域控制器,把本机加入到一个域中就可以了。
然后就可以通过erl -name mynode -setcookie abc建立分布式Erlang结点。

但是要想其他节点(假设这个节点叫othernode,运行在局域网上另外的机器上)通过rpc:call调用mynode上的进程,则需要DNS支持。
如果没有DNS,这个也好解决,修改othernode所在主机的C:\WINDOWS\system32\drivers\etc下的hosts文件,进行本地解析就可以了

当然,以上方法是在个人的局域网上做测试时采用的,如果你的机器本身有域名,并且可以通过DNS进行解析的话,以上问题是不会遇到的!
CUG122032 2008-11-20
  • 打赏
  • 举报
回复
c:\erl -sname mynode -setcookie abc
这样试试呢?

3,423

社区成员

发帖
与我相关
我的任务
社区描述
其他开发语言 其他开发语言
社区管理员
  • 其他开发语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧