erlang分布式入门(一)-ping pong
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
输入
- centos_erlang
:wq 退出保存
chmod 400 .erlang.cookie,linux下需要用户对magiccookie有读权限
3.启动epmd进程,它负责映射符号名到机器地址在两个机器都执行:epmd -daemon
4.ping-pong测试代码,来源自网上erlang教程,tut17.erl
- -module(tut17).
- -export([start_ping/1, start_pong/0, ping/2, pong/0]).
- ping(0, Pong_Node) ->
- {pong, Pong_Node} ! finished,
- io:format("ping finished~n", []);
- ping(N, Pong_Node) ->
- {pong, Pong_Node} ! {ping, self()},
- receive
- pong ->
- io:format("Ping received pong~n", [])
- end,
- ping(N - 1, Pong_Node).
- pong() ->
- receive
- finished ->
- io:format("Pong finished~n", []);
- {ping, Ping_PID} ->
- io:format("Pong received ping~n", []),
- Ping_PID ! pong,
- pong()
- end.
- start_pong() ->
- register(pong, spawn(tut17, pong, [])).
- start_ping(Pong_Node) ->
- 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). 会报错如下:
- ** exception error: bad argument in an arithmetic expression
- in operator -/2
- 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的更多相关文章
- Erlang分布式在linux和windows上的注意事项
没事做,就在两台机器间测试下Erlang分布式的例子,一个台是windowsXP,一台装的redHat9,没有详细的文档,自己摸索着搞成功了,记录下. 1.首先,分布式Erlang的实现提供了自有的安 ...
- Erlang 103 Erlang分布式编程
Outline 笔记系列 Erlang环境和顺序编程Erlang并发编程Erlang分布式编程YawsErlang/OTP 日期 变更说明 2014-11-23 A Outl ...
- Erlang cowboy 入门参考之现代Web的发展历史
Erlang cowboy 入门参考之现代Web发展史 原文: http://ninenines.eu/docs/en/cowboy/1.0/guide/modern_web/ 让我回顾一下web技术 ...
- HDU 2492 Ping pong (树状数组)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2492 Ping pong Problem Description N(3<=N<=2000 ...
- UVALive 4329 Ping pong
Ping pong Time Limit: 3000MS Memory Limit: Unknown 64bit IO Fo ...
- POJ 3928 Ping pong(树状数组)
Ping pong Time Limit: 1000MS ...
- LA4329 Ping pong(树状数组与组合原理)
N (3N20000)ping pong players live along a west-east street(consider the street as a line segment). E ...
- Ping pong
Ping pong Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- POJ 3928 Ping pong
题目链接:http://poj.org/problem?id=3928 乒乓比赛,有N个人参加,输入每个玩家的技能等级,对每个人设置一个特定ID和一个技能值,一场比赛需要两个选手和一个裁判,只有当裁判 ...
随机推荐
- setInterval()第一个参数带引号和不带引号的区别
setInterval()第一个参数带引号和不带引号的区别:关于定时函数setInterval()的基本用法这里就不做介绍了,查阅相关教程即可,这里主要介绍一下setInterval()函数的第一个参 ...
- ThinkPHP5.0的安装
ThinkPHP5.0的安装很简单: 1.下载“phpstudy”安装 2.下载thinkphp源文件 3.把thinkphp源文件解压并放到phpstudy目录下的“WWW”目录 4.然后开启服务并 ...
- Mongodb总结1-启动和Shell脚本
2013年,还在秒针,当时听说了Mongodb,就学习了下,搞了下HelloWorld.主要是熟悉Mongodb的启动.命令行的Shell脚本.Java访问的CRUD. 今天,由于需要,再次回顾和进一 ...
- 【CS Round #46 (Div. 1.5) C】Set Subtraction
[链接]h在这里写链接 [题意] 一开始有n个数字,然后有一个数字X,把每个数字都减去X,又生成N个新的数字. 然后把这2*N个数字混在一起. 告诉你这2*N个数字是什么.让你复原出原来的N个数字,以 ...
- UIViewController所有API的学习。
<欢迎大家加入iOS开发学习交流群:QQ529560119> /* UIViewController is a generic controller base class tha ...
- Spring Boot Shiro 权限管理
Spring Boot Shiro 权限管理 标签: springshiro 2016-01-14 23:44 94587人阅读 评论(60) 收藏 举报 .embody{ padding:10px ...
- springboot整合freemarker(转)
添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>sp ...
- [React] Close the menu component when click outside the menu
Most of the time, your components respond to events that occur within the component tree by defining ...
- Hadoop笔记(一)
1.大数据的概述 大数据:巨量数据.海量数据,首先在数据的量上达到一定的规模,首先是人或者计算机在不合理时间内是不能够实现的数据量. 2.特点:数据量比较大,数据类型多样化.处理速度问题 3.大数据平 ...
- LA 3644 - X-Plosives ( 也即UVA 1160)
LA看题 请点击:传送门 UVA 上也有这题 :UVA 1160 - X-Plosives 题目大意就是如果车上存在 k 个简单化合物,正好包含 k 种元素 ,那么它们将有危险,此时你应该拒绝装车. ...