zoukankan      html  css  js  c++  java
  • 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 

    输入

    Shell代码  收藏代码
    1. centos_erlang  

    :wq 退出保存

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

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

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

    Erlang代码  收藏代码
    1. -module(tut17).  
    2.   
    3. -export([start_ping/1, start_pong/0,  ping/2, pong/0]).  
    4.   
    5. ping(0, Pong_Node) ->  
    6.     {pong, Pong_Node} ! finished,  
    7.     io:format("ping finished~n", []);  
    8.   
    9. ping(N, Pong_Node) ->  
    10.     {pong, Pong_Node} ! {ping, self()},  
    11.     receive  
    12.         pong ->  
    13.             io:format("Ping received pong~n", [])  
    14.     end,  
    15.     ping(N - 1, Pong_Node).  
    16.   
    17. pong() ->  
    18.     receive  
    19.         finished ->  
    20.             io:format("Pong finished~n", []);  
    21.         {ping, Ping_PID} ->  
    22.             io:format("Pong received ping~n", []),  
    23.             Ping_PID ! pong,  
    24.             pong()  
    25.     end.  
    26.   
    27. start_pong() ->  
    28.     register(pong, spawn(tut17, pong, [])).  
    29.   
    30. start_ping(Pong_Node) ->  
    31.     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). 会报错如下:

    Shell代码  收藏代码
    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 才得以解决!

  • 相关阅读:
    办公室搞笑记(2) 李姐
    世界上疼我的人又少了一个
    带给杨帆的祝福:)
    火:) 火:) 火:)
    我们都是享受寂寞的孩子:)
    복 경 에 갑 니 다 :) 去北京.
    너는 겨울이 좋아요 .我喜欢冬天:)
    2007年:新年,新开始:)
    Nginx 泛域名配置方式
    数据库设计 从零开始系列之一
  • 原文地址:https://www.cnblogs.com/fvsfvs123/p/4244820.html
Copyright © 2011-2022 走看看