ICE之C/S通信原理

简介: 1 /* 2 在ICE文档中只需要声明module名称,接口名称,方法名称 3 */ 4 5 #ifndef SIMPLE_ICE 6 #define SIMPLE_ICE 7 8 module Demo{ //mod...
 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";)

 

相关文章
|
1月前
|
人工智能 物联网 5G
|
8月前
|
存储 SoC
深入理解AMBA总线(十一)AXI协议导论
深入理解AMBA总线(十一)AXI协议导论
448 0
|
10月前
|
算法 网络协议 安全
m基于DE2-115开发板的网口UDP数据收发系统FPGA实现
m基于DE2-115开发板的网口UDP数据收发系统FPGA实现
228 0
|
网络协议 测试技术 芯片
基于ZYNQ+DSP平台Zynq7035/45 FPGA高速串行接口的千兆以太网UDP例程设计和使用说明
Xilinx XC7Z035/45-2FFG676I PL端高速串行接口的千兆以太网UDP例程设计和使用说明
基于ZYNQ+DSP平台Zynq7035/45 FPGA高速串行接口的千兆以太网UDP例程设计和使用说明
|
芯片 异构计算
详解串行通信协议及其FPGA实现(一)
详解串行通信协议及其FPGA实现(一)
206 0
详解串行通信协议及其FPGA实现(一)
|
异构计算
详解串行通信协议及其FPGA实现(二)
详解串行通信协议及其FPGA实现(二)
89 0
详解串行通信协议及其FPGA实现(二)
|
存储 缓存 计算机视觉
ZYNQ-AXI_VDMA IP简介
ZYNQ-AXI_VDMA IP简介
271 0
ZYNQ-AXI_VDMA IP简介
|
芯片
ZYNQ-AXI总线简介
ZYNQ-AXI总线简介
296 0
ZYNQ-AXI总线简介
|
Web App开发 调度 ice
WebRTC ICE 状态与提名处理
大家都知道奥斯卡有提名,其实在 WebRTC 的 ICE 中也有提名,有常规的提名,也有激进的提名,而且提名的候选人不一定是最优秀的候选人喔,本文就带你一探其中玄妙。文章内容主要描述 RFC 5245 中 ICE 相关的状态和 ICE 提名机制,并结合 libnice(0.14) 版本进行分析。
WebRTC ICE 状态与提名处理
|
自然语言处理 Java C++