首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >二郎在两台计算机中进行通信

二郎在两台计算机中进行通信
EN

Stack Overflow用户
提问于 2012-04-20 00:37:01
回答 1查看 531关注 0票数 1

这是一个在Erlang的两个进程通信程序.

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

我需要运行erl -name ping

在computer2中,其主机名为Linux-2

我得跑了

代码语言:javascript
复制
 erl -name pong

在computer1中,其主机名为linux-1。

然后,

在计算机1上,我运行:

代码语言:javascript
复制
  tut17:start_pong().

在计算机2上,我运行:

代码语言:javascript
复制
 tut17:start_ping(pong@linux-1)

但是,我错了:

  • 异常错误:操作符-/2中名为pong@linux - 1

的算术表达式中的错误参数

在"linux-1“中,Erlang似乎认为”-“是负运算符。

那么,如何让二郎明白我的命令呢?

任何帮助都是非常感谢的。

守则如下:

代码语言:javascript
复制
 -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]).
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-20 06:10:37

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

代码语言:javascript
复制
tut17:start_ping('pong@linux-1')

http://www.erlang.org/doc/reference_manual/data_types.html#id66276

如果原子不以小写字母开头,或者它包含字母数字字符以外的其他字符,则应该用单引号(')括起来,下划线(_)或@.。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10238767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档