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