2012-04-20 3 views
1

Это 2-процессная коммуникационная программа в Эрланге.Два процесса связи на двух компьютерах Erlang

Мне нужно запускать каждый процесс на другом компьютере.

мне нужно запустить Эрл -Name пинганем

в COMPUTER2, чье имя хоста является Linux-2.mydomain

И, мне нужно запустить

erl -name pong 

в COMPUTER1, чьи имя хоста - linux-1.mydomain

Затем

На компьютере 1, я бегу:

tut17:start_pong(). 

На компьютере 2, я бегу:

tut17:start_ping([email protected]) 

Но я получил ошибку:

  • ошибку исключения: плохой аргумент в арифметическом выражении в операторе -/2 названный pong @ linux - 1

Кажется, что Эрланг считал, что «-» - это минус-оператор в «linux-1».

Итак, как заставить Эрланг понять мою команду?

Любая помощь действительно оценена.

код ниже:

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

ответ

Смежные вопросы