ice client代理类的实现与解读

在上一文章中,我发现ice的server类都是大同小意,每一个ice server类都实现一个Adapter,然后新建一个servant对像,再把servant 对像添加标识符,把servant添加到Adapter中,基本上每天个ice server类都是如此实现的。

其实ice的client类也大致有着相同的规则,我们以上一个SimplePrinter为例,说明为何实现一个client类

 

 

 

 

1. 和在服务器中一样,我们调用Ice::initialize 初始化Ice run

time。

 

 

 

2. 下一步是获取远地打印机的代理。我们调用通信器的stringToProxy

创建一个代理,所用参数是"SimplePrinter:default -

p 10000"。注意,这个串包含的是对象标识和服务器所用的端口号

 

 

 

 

 

3. stringToProxy 返回的代理的类型是Ice::ObjectPrx,这种类型

位于接口和类的继承树的根部。但要实际与我们的打印机交谈,我们需

要的是Printer 接口、而不是Object 接口的代理。为此,我们需要调

用PrinterPrxHelper.checkedCast 进行向下转换。这个方法会

发送一条消息给服务器,实际询问“这是Printer 接口的代理吗?”如

果是,这个调用就会返回Printer 的一个代理;如果代理代表的是其他

类型的接口,这个调用就会返回一个空代理。

 

 

 

 

4. 我们测试向下转换是否成功,如果不成功,就抛出出错消息,终止客

户。

5. 现在,我们在我们的地址空间里有了一个活的代理,可以调用

printString 方法,把享誉已久的 "Hello World!" 串传给它。服务

器会在它的终端上打印这个串。

客户的编译看起来与服务器很像:

 

统计

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值