erlang分布式入门(一)-ping pong

测试环境和http://willvvv.iteye.com/blog/1523918 一样,192.168.0.182(centos-182)和192.168.0.183(centos-183),

1.按照上面链接(步骤1-4)设置通过ssh hostname 免输入密码直接登录。

2.设置erlang的magiccookie,由于都是以root账号操作,分别在两台机子上执行以下命令

cd /root

vi .erlang.cookie

输入

  1. centos_erlang

:wq 退出保存

chmod 400 .erlang.cookie,linux下需要用户对magiccookie有读权限

3.启动epmd进程,它负责映射符号名到机器地址在两个机器都执行:epmd -daemon

4.ping-pong测试代码,来源自网上erlang教程,tut17.erl

  1. -module(tut17).
  2. -export([start_ping/1, start_pong/0,  ping/2, pong/0]).
  3. ping(0, Pong_Node) ->
  4. {pong, Pong_Node} ! finished,
  5. io:format("ping finished~n", []);
  6. ping(N, Pong_Node) ->
  7. {pong, Pong_Node} ! {ping, self()},
  8. receive
  9. pong ->
  10. io:format("Ping received pong~n", [])
  11. end,
  12. ping(N - 1, Pong_Node).
  13. pong() ->
  14. receive
  15. finished ->
  16. io:format("Pong finished~n", []);
  17. {ping, Ping_PID} ->
  18. io:format("Pong received ping~n", []),
  19. Ping_PID ! pong,
  20. pong()
  21. end.
  22. start_pong() ->
  23. register(pong, spawn(tut17, pong, [])).
  24. start_ping(Pong_Node) ->
  25. spawn(tut17, ping, [3, Pong_Node]).

5.在centos-183上执行erl -sname 'pong' ,启动pong节点,进入erl命令行之后输入 tut17:start_pong().

在centos-182上执行 erl -sname 'ping',启动ping节点,进入erl命令行之后输入 tut17:start_ping('pong@centos-183').

命令及输出见下图:


 

注意在ping节点上的erl命令行启动ping进程的时候如果输入tut17:start_ping(pong@centos-183). 会报错如下:

  1. ** exception error: bad argument in an arithmetic expression
  2. in operator  -/2
  3. called as pong@centos - 183

在参考“庄周梦蝶”的http://www.blogjava.net/killme2008/archive/2007/06/15/124547.html时就出现这个错误,后来在stackoverflow 上找到一个相关问题 http://stackoverflow.com/questions/413736/naming-nodes-in-erlang 才得以解决!

erlang分布式入门(一)-ping pong的更多相关文章

  1. Erlang分布式在linux和windows上的注意事项

    没事做,就在两台机器间测试下Erlang分布式的例子,一个台是windowsXP,一台装的redHat9,没有详细的文档,自己摸索着搞成功了,记录下. 1.首先,分布式Erlang的实现提供了自有的安 ...

  2. Erlang 103 Erlang分布式编程

    Outline 笔记系列 Erlang环境和顺序编程Erlang并发编程Erlang分布式编程YawsErlang/OTP 日期              变更说明 2014-11-23 A Outl ...

  3. Erlang cowboy 入门参考之现代Web的发展历史

    Erlang cowboy 入门参考之现代Web发展史 原文: http://ninenines.eu/docs/en/cowboy/1.0/guide/modern_web/ 让我回顾一下web技术 ...

  4. HDU 2492 Ping pong (树状数组)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2492 Ping pong Problem Description N(3<=N<=2000 ...

  5. UVALive 4329 Ping pong

                                      Ping pong Time Limit: 3000MS   Memory Limit: Unknown   64bit IO Fo ...

  6. POJ 3928 Ping pong(树状数组)

                                                                          Ping pong Time Limit: 1000MS   ...

  7. LA4329 Ping pong(树状数组与组合原理)

    N (3N20000)ping pong players live along a west-east street(consider the street as a line segment). E ...

  8. Ping pong

    Ping pong Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  9. POJ 3928 Ping pong

    题目链接:http://poj.org/problem?id=3928 乒乓比赛,有N个人参加,输入每个玩家的技能等级,对每个人设置一个特定ID和一个技能值,一场比赛需要两个选手和一个裁判,只有当裁判 ...

随机推荐

  1. 10.Maven依赖排除 禁止依赖传递 取消依赖的方法

    转自:https://www.cnblogs.com/duanxz/p/6084494.html 大家都知道Maven的优点是依赖管理,特别是前期使用ANT的开发者都有很多感触.最近要开发一个java ...

  2. hibernate 注解配置<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/X

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  3. vue使用(二)

    本节目标:           1.数据路径的三种方式          2.{{}}和v-html的区别 1.绑定图片的路径 方法一:直接写路径 <img src="http://p ...

  4. 逻辑与和逻辑或:&& 、||

    逻辑或:首先看左边是真还是假(除了那5个都是真),如果为真,返回左边值,如果为假,返回右边的值 逻辑与:和逻辑或相同,先看左边的值是真是假,如果左边为真返回右边的值,左边为假返回左边的值 在两者同时出 ...

  5. 我的Go语言学习之旅三:Go语言中的for循环

    这个但是为难我了,我一直是走在WEB前的程序猿,各种循环用起来得心应手.突然间发现到了Go这里竟然行不通了,查阅后才发现,原来Go的for是这样写的. for i:=0;i<10;i++{ fm ...

  6. NDIS

    NDIS NDIS(NetworkDriverInterfaceSpecification)是网络驱动程序接口规范的简称.它横跨传输层.网络层和数据 链路层,定义了网卡或网卡驱动程序与上层协议驱动程序 ...

  7. Android onLoadFinished与onLoaderReset

    onLoadFinished 这个方法是在前面已创建的加载器已经完成其加载过程后被调用,这个方法保证会在应用到加载器上的数据被释放之前被调用.在此方法中,你必须删除所有对旧数据的使用(因为它将很快会被 ...

  8. hdu 1506 Largest Rectangle in a Histogram ((dp求最大子矩阵))

    # include <stdio.h> # include <algorithm> # include <iostream> # include <math. ...

  9. JSP中多条件判断

    <c:if test="${result_map.connNew ne null and result_map.connNew ne 0}"> </c:if> ...

  10. ios开发图层layer与核心动画二:CATransform3D,CAlayear和UIView区别,layer的position和anchorpoint

    一:CATransform3D #import "ViewController.h" @interface ViewController () @property (weak, n ...