ICE之C/S通信原理

 1 /*
 2   在ICE文档中只需要声明module名称,接口名称,方法名称
 3 */
 4 
 5 #ifndef SIMPLE_ICE
 6 #define SIMPLE_ICE
 7 
 8 module Demo{                     //module名称
 9   interface Printer              //接口名称
10   {
11     void printString(string s);  //方法名称
12 
13   };
14 
15 };
16 
17 #endif

s端示例:

try{
    ic = Ice.Util.initalize(ref args);
    Ice.ObjectAdapter adapter = ic.createObjectAdapterwithEndpoints("SimplePrintAdapter",
                              "default -p 10000");
    Ice.Object obj = new Printerl();  //Printerl类继承了Printer
    adapter.add(obj, ic.stringToldentity("SimplePrinter"));
    adapter.activate();
    ic.waitForShutdown();
  }catch (Exception e){
    Console.Error.WriterLine(e);
    status =1;

  }

功能:
1、创建一个对象适配器(ObjectAdapter)对象IOAdapter,并初始化之;
2、参数“SimplePrinterAdapter”:表示适配器的名字;
3、参数“default -p 10000”:表示适配器使用缺省协议(TCP/IP)在端口10000处监听到来的请求;
4、服务器配置完成;
5、为Printerl接口创建一个servant;
6、激活适配器,以使服务器开始处理来自c端的请求;
7、挂起发出调用的线程,知道服务器实现终止为止;
8、或者是通过发出一个调用关闭运行(run time)的指令来使服务器终止;

C端:
try{
  ic = Ice.Util.initialize(ref args);                                //获取远程对象代理
  Ice.ObjectPrx obj= ic.stringToProxy("SimplePrinter:default -p 10000");  //创建一个代理对象,并用通信器的stringToProxy()方法初始化之;
  PrinterPrx printer = PrinterPrxHelper.checkCast(obj);       //调用服务鉴别函数
  if(printer == NULL)
  {
    throw new ApplicationException("Invalid proxy");

    printer.printString("Hello World!!");  //成功则远程调用方法
  }catch (Exception e){
    Console.Error.WriteLine(e);
    status = 1;
  }
}

功能:
1、获取远程对象代理
2、创建一个代理对象,并用通信器的stringToProxy()方法初始化之;
3、提供参数:“SimplePrinter:default -p 10000”
4、调用服务鉴别函数,如果不成功则抛出异常信息“Invalid proxy”;成功则
远程调用方法:printer.printString("hello world";)

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值