zoukankan      html  css  js  c++  java
  • erlang节点局域网通信

    节点1:

    F:WorkSpaceServersrc>erl -name hw@192.168.10.142 -setcookie 4213
    consulting .erlang in "F:/WorkSpace/Server/src"
    Now  in:"F:/WorkSpace/Server/src"
    Eshell V5.9.3.1  (abort with ^G)
    (hw@192.168.10.142)1> auth:get_cookie().
    '4213'
    (hw@192.168.10.142)2> hw:start().
    true
    (hw@192.168.10.142)3>

    步骤
    启动节点: erl -name hw@192.168.10.142 -setcookie 4213

    启动进程: hw:start().

    注意: 本地机器不同节点可以用都短名 -sname, 跨网络涉及到DNS要用-name

    节点2:

    F:WorkSpaceServersrc>erl -name bibo@192.168.10.142 -setcookie 4213
    consulting .erlang in "F:/WorkSpace/Server/src"
    Now  in:"F:/WorkSpace/Server/src"
    Eshell V5.9.3.1  (abort with ^G)
    (bibo@192.168.10.142)1>
    net_adm:ping(hw@192.168.10.142).
    * 2: syntax error before: 168.1
    (bibo@192.168.10.142)1> net_adm:ping(hw@192.168.10.142).
    * 1: syntax error before: 168.1
    (bibo@192.168.10.142)1> net_adm:ping('hw@192.168.10.142').
    pong
    (bibo@192.168.10.142)2> node().
    'bibo@192.168.10.142'
    (bibo@192.168.10.142)3> auth_getcookie().
    ** exception error: undefined shell command auth_getcookie/0
    (bibo@192.168.10.142)4> auth:get_cookie().
    '4213'
    (bibo@192.168.10.142)5> net_adm:ping('hw@192.168.10.142').
    pong
    (bibo@192.168.10.142)6> node().
    'bibo@192.168.10.142'
    (bibo@192.168.10.142)7> rpc:call(hw@192.168.10.142,hw,store,[weather,cold]).
    * 1: syntax error before: 168.1
    (bibo@192.168.10.142)7> rpc:call('hw@192.168.10.142',hw,store,[weather,cold]).
    cold
    (bibo@192.168.10.142)8> rpc:call('hw@192.168.10.142',hw,lookup,[weather]).
    {ok,cold}
    (bibo@192.168.10.142)9>

    步骤

    启动节点: erl -name bibo@192.168.10.142 -setcookie 4213

    启动进程: rpc:call('hw@192.168.10.142',hw,store,[weather,cold]).

                   rpc:call('hw@192.168.10.142',hw,lookup,[weather]).

    注意: 'hw@192.168.10.142'  不能少了单引号

    两个节点用的代码是同样的, 如下:

    %% @author Administrator
    %% @doc @todo Add description to bibo.
    
    
    -module(bibo).
    
    %% ====================================================================
    %% API functions
    %% ====================================================================
    -export([]).
    
    
    
    %% ====================================================================
    %% Internal functions
    %% ====================================================================
    
    %% ====================================================================
    %% API functions
    %% ====================================================================
    %%-export([start/2, stop/1]).
    -compile(export_all).
     
    
    %% ====================================================================
    %% Internal functions
    %% ====================================================================
    
    
    start()->
        register(kvs, spawn(fun()->
                                    loop()
                            end)
                ).
    
    loop()->
        receive
            {From, {store, Key, Value}}->
                put(Key, {ok, Value}),
                From ! {kvs, Value},
                loop();
            {From, {lookup, Key}} ->
                From ! {kvs, get(Key)},
                loop()
        end.
    
    store(Key, Value)->
        rpc({store, Key, Value}).
    
    lookup(Key)->
        rpc({lookup, Key}).
    
    rpc(Q)->
        kvs ! {self(), Q},
        receive
            {kvs, Reply}->
                Reply
        end.
            
        
  • 相关阅读:
    ActionBar Fragment的一个sample activity; 及获取runningAppProcess及跳转
    优化后台推送的service,减少被杀死的几率
    64位win7安装ubunto最新14.04的过程,及出现的问题的解决
    一次非线上iowait高的情况的检查
    一个愚蠢的python逻辑语法错误
    Bellman-Ford算法解决单源最短路问题
    Floyd算法解决多源最短路径问题
    最短路问题Dijkstra算法
    最小生成树之Kruskal算法
    最优二叉搜索树
  • 原文地址:https://www.cnblogs.com/jluzhsai/p/4402210.html
Copyright © 2011-2022 走看看