设为首页收藏本站

Erlang中文论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 19118|回复: 0
打印 上一主题 下一主题

远程程序调用

[复制链接]
跳转到指定楼层
楼主
发表于 2015-2-4 02:22:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  有一段时间没有上过贴了。有部分原因是这几天没什么时间;不过主要的原因还是我找不到素材和近况在书上看到的
还是一知半解,所以不敢上贴。希望大家能继续跟帖,我会多加努力多找些好东西。
下面是我这次想介绍的,在本地调用和远程调用中主要是远程节点可能会失效,在《erlang编程指南》中有三种方法解决

1添加一个超时:
   remote_call(Message,Node) ->
       {facserver,Node} ! {self(),Message},
       receive
          {ok,Res} ->
               Res
          after 1000 ->
       end.

2就是链接到服务器进程用到 spawn_link/4,跟spawn/4不同。
     setup() ->
         process_flage(trap_exit,true),
         spawn_link('bar@ST',myrpc,server,[]).

3用monitor_node/2监控节点
      remote_call(Message,Node)  ->
          monitor_node(Node,true),
          {facserver,Node}  ! {self(),Message},
             receive
                {ok,Res} ->
                     monitor_node(Node,false),
                     Res;
                {nodedown,Node} ->
                     {error,node_down}
             end.
我觉得第三种方法是monitor_node(Node,true),向远程监控发送了消息,远程的监控根据节点的
存在与否发送不同的消息回来,所以在调用了monitor_node(Node,true)后就必须用monitor_node(Node,false),
来接收远程发来的消息。



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|Erldoc.com  

GMT+8, 2024-11-24 13:07 , Processed in 0.426951 second(s), 7 queries , File On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表