2012-04-20 127 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]). 

回答

相關問題