原文:http://blog.chinaunix.net/uid-22566367-id-382011.htmlhtml
在Programming Erlang这本书中,在写到第十章中,主要实现的是不一样节点之间的通讯,书上列出了四步,其中的第一步很容易实现,依葫芦画瓢,很容易实现同一台机子上,不一样节点之间的通讯,运行结果和书上的彻底一致。
当你急切地去尝试第二步(在局域网内,不一样机子之间的通讯)时,你可能会卡住的(本人是这样的,不知道你?),实践的结果和Joe所说的彻底不同(你若是按照书上所说,在kvs:start()的状况下,而后rpc,会获得这样的结果——{badrpc, nodedown})。
下面,就把本人的艰难四步总结一下,
1)学会使用net_adm:ping(node@Hostname)命令。
这个结果多是pong,也多是pang。其中pong表示能够ping通,pang表示ping不通。
2)ping通局域网。
在linux shell下把你要通讯pc机ping通。
注意有一种可能,就是ping IP地址成功了可是ping机器名称没成功,那是由于机器名和IP地址没有关联。关联的方法是编辑机内的hosts文件。windows平台这个文件在system32/drivers/etc里,而*nix在/etc里。把机子的IP和hostname关联起来,在操做系统shell去ping,成功后再到Erlang下面去ping。(网上的资料)
3)启动erlang节点。
若是以上步骤能实现的话,就启动erlang shell吧。
例如,在一个局域内,我在不一样的机子上各自启动了一个erlang shell。
gaoyi@gaoyi-laptop:~$ erl -name fang@192.168.200.53 -setcookie 123
[sunny@localhost ~]4$ erl -name sunny@192.168.200.11 -setcookie 123
注:若是在启动的时候,不用ip的话,下面是ping不通的。
4)net_adm:ping的实现。
例如,我在gaoyi机子上,执行net_adm:ping('sunny@192.168.200.11').
获得的结果是pong,表示能够ping通了,o(∩∩)o...哈哈。
注意:net_adm:ping()内的参数必须带引号的。
至此,咱们实现了局域网之间的通讯,能够进一步测试程序了。node