http://blog.chinaunix.net/uid-22566367-id-382011.html

在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()内的参数必须带引号的。

在局域网内部,一般用短节点名来完成短节点的全联通。
     全联通的前提之一是cookie要相同,cookie记录在一个文件中。
     对于同一个物理机上的两个erlang节点,不用其他配置就可以全联通。
     对于不在同一个物理机上的erlang节点,需要配置cookie才行。
     在其中一台物理机的命令行上执行erl  -sname s1@hostname,在另一台物理机的shell上执行erl -sname s2@hostname
     分别在shell上执行auth:get_cookie(),查看是否相同,如果不同则通过auth:set_cookie(node(),'yourcookie')设置成相同的。
     然后执行net_adm:ping(OtherNode),OtherNode就是s!@hostnames2@hostname
     如果执行结果是pong,则表示成功了,可以通过nodes()查看。

至此,我们实现了局域网之间的通信,可以进一步测试程序了。

erlang局域网内节点通信——艰难四步曲的更多相关文章

  1. erlang局域网内节点通信——艰难四步曲 (转)

    http://blog.chinaunix.net/uid-22566367-id-382011.html 在Programming Erlang这本书中,在写到第十章中,主要实现的是不同节点之间的通 ...

  2. 实现upnp ssdp来查找局域网内的其他节点

    upnp协议常用于一些智能家居产品中,这些产品连上家里局域网后,用同样连入家中局域网的手机就能很快检测到此产品了.在区块链技术中,upnp也被应用于寻找同一局域网内的其他节点. 关于upnp的具体描述 ...

  3. 就该这样理解 OSI 七层参考模型、浅谈不同局域网之间的通信

    简介 说到OSI参考模型,理解网络与网络之间的关系,不说太深入难以理解的东西,只求能最大程度上理解与使用. 参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系,一般称为O ...

  4. 局域网内Linux服务器时间同步

    局域网内Linux服务器时间同步   1.将一台能够上网的服务器作为时间服务器:  # /usr/bin/rdate -s time-b.timefreq.bldrdoc.gov //将时间服务器与互 ...

  5. 局域网内部署 Docker Registry

    在局域网内部署 Docker Registry 可以极大的提升平时 pull.push 镜像的速度,从而缩短自动化操作的过程.同时也可以缓解带宽不足的问题,真是一举多得.本文将从创建单机的 Docke ...

  6. 在内部局域网内搭建HTTPs

    在内部局域网内搭建HTTPs 配置环境 Windows版本:Windows Server 2008 R2 Standard Service Pack 1 系统类型:       64 位操作系统 内存 ...

  7. 局域网内python socket实现windows与linux间简单的消息传送

    有个需求,就是在windows上看见一篇介绍linux相关的文章,想在局域网内的另外一台linux电脑上尝试一下, 于是就需要把该网页链接发送给linux,不想一点一点敲链接,又苦于没有找到其它好的方 ...

  8. mDNS原理的简单理解——每个进入局域网的主机,如果开启了mDNS服务的话,都会向局域网内的所有主机组播一个消息,我是谁,和我的IP地址是多少。然后其他也有该服务的主机就会响应,也会告诉你,它是谁,它的IP地址是多少

    MDNS协议介绍 mDNS multicast DNS , 使用5353端口,组播地址 224.0.0.251.在一个没有常规DNS服务器的小型网络内,可以使用mDNS来实现类似DNS的编程接口.包格 ...

  9. CAN总线多节点通信异常分析及解决

    一.CAN物理层特征 CAN收发器的作用是负责逻辑电平和信号电平之间的转换.即从CAN控制芯片输出逻辑电平到CAN收发器,然后经过CAN收发器内部转换将逻辑电平转换为差分信号输出到CAN总线上,CAN ...

随机推荐

  1. HTML基础-第二讲

    转自:https://blog.csdn.net/likaier/article/details/326657 我们在第一讲里概括了一下网页的主要框架,现在我们来详细的研究网页的内部细则: 先从它的身 ...

  2. 洛谷 P2299 Mzc和体委的争夺战

    洛谷 P2299 Mzc和体委的争夺战 题目背景 mzc与djn第四弹. 题目描述 mzc家很有钱(开玩笑),他家有n个男家丁(做过前三弹的都知道).但如此之多的男家丁吸引来了我们的体委(矮胖小伙), ...

  3. Maven学习总结(18)——深入理解Maven仓库

    一.本地仓库(Local Repository) 本地仓库就是一个本机的目录,这个目录被用来存储我们项目的所有依赖(插件的jar包还有一些其他的文件),简单的说,当你build一个Maven项目的时候 ...

  4. C# SocketAsyncEventArgs类

    Namespace:System.Net.Sockets Assemblies:System.Net.Sockets.dll, System.dll, netstandard.dll (Represe ...

  5. JS错误记录 - fgm练习 - 函数传参

    <script> window.onload = function() { var oBtn = document.getElementsByTagName('button')[0]; v ...

  6. 手机用appnium,web自动化用eclips+webdriver2

    手机用appnium,web自动化用eclips+webdriver2 吴建清 pycharm 1.安装环境2.pycharm类似eclipse,写脚本,运行脚本3.uiautomatorviewer ...

  7. 在 Swift 项目中实现侧滑菜单-利用 SWRevealViewController

    你可以完全自己手动写一个侧滑菜单,但是现在在 GitHub 上面已经有很多免费的开源库了,如果不是有很特别的需求,大可不必新建一个轮子. 在这里我使用的这个第三方库名字叫做 SWRevealViewC ...

  8. Android LoaderManager与CursorLoader用法

    一.基本概念 1.LoaderManager LoaderManager用来负责管理与Activity或者Fragment联系起来的一个或多个Loaders对象. 每个Activity或者Fragme ...

  9. [PostgreSQL] Use Foreign Keys to Ensure Data Integrity in Postgres

    Every movie needs a director and every rented movie needs to exist in the store. How do we make sure ...

  10. Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others)

    Crazy Bobo Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others) Tota ...