Linux 两个进程通过Erlang在两台计算机中通信

Linux 两个进程通过Erlang在两台计算机中通信,linux,erlang,multiprocessing,Linux,Erlang,Multiprocessing,这是Erlang中的一个2进程通信程序 我需要在不同的计算机上运行每个进程 我得走了 erl-名称ping 在computer2中,其主机名为linux-2.mydomain 而且,我需要跑步 erl -name pong 在computer1中,其主机名为linux-1.mydomain 那么 在计算机1上,我运行: tut17:start_pong(). 在计算机2上,我运行: tut17:start_ping(pong@linux-1) 但是,我有一个错误: 异常错误:算术

这是Erlang中的一个2进程通信程序

我需要在不同的计算机上运行每个进程

我得走了 erl-名称ping

在computer2中,其主机名为linux-2.mydomain

而且,我需要跑步

 erl -name pong
在computer1中,其主机名为linux-1.mydomain

那么

在计算机1上,我运行:

  tut17:start_pong().
在计算机2上,我运行:

 tut17:start_ping(pong@linux-1)
但是,我有一个错误:

  • 异常错误:算术表达式中的参数错误 在操作员-/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('pong@linux-1')

原子应该是封闭的 如果不是以小写字母开头或 如果包含字母数字字符以外的其他字符, 下划线(\)或@


将节点名称放在单引号中:

tut17:start_ping('pong@linux-1')

原子应该是封闭的 如果不是以小写字母开头或 如果包含字母数字字符以外的其他字符, 下划线(\)或@