Erlang在两台计算机上进行两个进程通信
问题描述:
这是一个在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]).
答
放在单引号节点名称:
tut17:start_ping('[email protected]')
http://www.erlang.org/doc/reference_manual/data_types.html#id66276
An atom should be enclosed in single quotes (') if it does not begin with a lower-case letter or if it contains other characters than alphanumeric characters, underscore (_), or @.