2012-04-20 90 views
1

这是一个在Erlang进行的双进程通信程序。Erlang在两台计算机上进行两个进程通信

我需要在不同的计算机上运行每个进程。

我需要运行 ERL -name平

在电脑2

,其主机名是Linux-2.mydomain

而且,我需要运行

erl -name pong 

IN电脑,其主机名是linux-1.mydomain

然后,

在电脑1,我运行:

tut17:start_pong(). 

电脑2,我跑:

tut17:start_ping([email protected]) 

但是,我得到了错误:算术表达式坏的说法:

  • 异常错误 in operator -/2 称为pong @ linux - 1

似乎Erlang认为“ - ”是“linux-1”中的负运算符。

那么,如何让Erlang了解我的命令呢?

任何帮助真的很感激。

的代码如下:

-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]). 

回答

相关问题