网络中的RMI方式

网络应用部分,RMI(Remote method Invokation)大致是常见的一种方式。这种方式翻译过来讲就是远程调用,本地机器可以调用远程机器的一段代码。这篇文章来看一下RMI怎么使用。


首先,我们先看怎么进行RMI。

----------------------------------------

在代码中,我们可 以用InvokeRMI()这样的方法来进行一次RMI,服务器调用客户端,或者是客户端调用服务器,举例来说,


pGame -> GetGameRules() -> GetGameObject() ->InvokeRMI ( CGameRules::RequestToDoSomething(), CGameRules::NoParams, eRMI_ToServer);


这样一个语句就发起一次对服务器的RMI调用,第一个参数说明了要调用的方法;第二个参数是调用是这个方法能用到的参数;第三个参数是方向,例子中是调用服务器上的。需要说明的是,第二个参数虽然看语义是没有参数,实际操作过程中,因为第二个参数都是一个struct(在C++中,跟class几乎同义),所以依然是有数据的,而不是想象中的NULL。


然后,我们来看在使 用上面的方式的之前,我们需要准备好哪些。

--------------------------------------------------------------------------------------

1,必须申明相关的方法,方法是在对应的头文件中,找到对应的类,用Crytek预定义的宏,如DECLARE_SERVICE_RMI_NOATTACH_FAST()之类的在相关地方进行声明,举例来说,上面的调用,我们必须在类CGameRules中,用这个宏进行定义


DECLARE_SERVICE_RMI_NOATTACH_FAST (RequestToDoSomething, XX, XX)


2,必须在相应的文件中,实现这个申明的东西,同样用到宏,一般是IMPLEMENT_RMI ()。同样举例,上述的就应该在某个CPP文件中写上

 

IMPLEMENT_RMI (CGameRules, RequestToDoSomething)   {     }


大括弧填上收到这个网络调用时要完成的事情的代码。


到此,我们在应用层面上了解了RMI。在结束之前,必须说明的是,申明和实现的宏不止上面的例子中的一种,这个可以通过该宏申明的文件看到。声明宏的作用根本上是在相应的类里面加上了两个方法(每一次宏就加上2个)和几个成员变量;实现宏是实现这两个方法,供远程消息到本机上后处理的时候进行所谓的回调之用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值