2012-04-20 2 views
1

Il s'agit d'un programme de communication à 2 processus dans Erlang.Deux processus communiquent dans deux ordinateurs par Erlang

Je dois exécuter chaque processus sur un autre ordinateur.

Je dois exécuter ERL -nom ping

dans computer2, dont le nom est l'hôte linux-2.mydomain

Et, je dois courir

erl -name pong 

à ordinateur1, dont nom d'hôte est linux-1.mydomain

Ensuite,

Sur l'ordinateur 1, je lance:

tut17:start_pong(). 

Sur l'ordinateur 2, je lance:

tut17:start_ping([email protected]) 

Mais, je suis arrivé erreur:

  • erreur d'exception: mauvais argument en une expression arithmétique dans l'opérateur -/2 appelé comme pong @ linux - 1

il semble que Erlang pensait que le "-" est l'opérateur moins dans "linux-1". Alors, comment faire comprendre à Erlang ma commande?

Toute aide est vraiment appréciée.

Le code est ci-dessous:

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

Répondre

Questions connexes