ICE 通信框架

本文档详细介绍了如何使用ICE通信框架编写和编译C++应用。首先,展示了如何编写Slice定义,创建一个简单的打印服务接口。接着,解释了如何编译Slice定义生成C++代码,并编写服务器端代码,包括初始化Ice运行时、创建对象适配器、激活服务器以及处理异常。服务器代码实现了Printer接口,当接收到打印请求时,将字符串输出到控制台。最后,提到了编译和链接服务器程序的步骤。
摘要由CSDN通过智能技术生成

为了便于我们学习,我们用一个例子来说明ICE的开发流程及大致框架。

本例子程序的目的是创建一个非常简单的客户-服务器应用。这个应用提供远地打印功能:客户发送要打印文本给服务器,再由服务器把文本发给打印机。

1,编写 Slice 定义

编写任何 Ice 应用的第一步都是要编写一个Slice 定义,其中含有应用所用的各个接口。我们为我们的小打印应用编写了这样的 Slice定义:

interfacePrinter
{
voidprintString(strings);
};

我们把这段文本保存在叫作 Printer.ice 的文件中。

2,编写使用 C++ 的 Ice应用

这里我们使用C++语言来编写ICE应用程序

2.1,编译用于 C++的 Slice 定义

在 UNIX 上,你可以这样编译定义:
$ slice2cpp Printer.ice
slice2cpp 编译器根据这个定义生成两个C++ 源文件:Printer.h和Printer.cpp。
• Printer.h
Printer.h头文件含有与我们的Printer接口的Slice定义相对应的C++ 类型定义。在客户和服务器源码中必须包括这个头文件。
• Printer.cpp
Printer.cpp 文件含有我们的Printer 接口的源码。所生成的源码同时为客户和服务器提供针对特定类型的运行时支持。例如,它包含了在客户端整编参数数据(传给printString 操作的串)的代码,以及在服务器端解编数据的代码。
我们必须编译 Printer.cpp 文件,并把它链接进客户和服务器。

2.2 编写和编译服务器

#include<Ice/Ice.h>
#include<Printer.h>
usingnamespacestd;
classPrinterI:publicPrinter{
public:
virtualvoidprintString(conststring&s,
constIce::Current&);
};
void
PrinterI::
printString(conststring&s,constIce::Current&)
{
cout<<s<<endl;
}
int
main(intargc,char*argv[])
{
intstatus=0;
Ice::CommunicatorPtric;
try{
ic=Ice::initialize(argc,argv);
Ice::ObjectAdapterPtradapter
=ic->createObjectAdapterWithEndpoints(
"SimplePrinterAdapter","default-p10000");
Ice::ObjectPtrobject=newPrinterI;
adapter->add(object,
Ice::stringToIdentity("SimplePrinter"));
adapter->activate();
ic->waitForShutdown();
}catch(constIce::Exception&e){
cerr<<e<<endl;
status=1;
}catch(constchar*msg){
cerr<<msg<<endl;
status=1;
}
if(ic)
ic->destroy();
returnstatus;
}
<span style="font-size:10px;font-weight: normal;">//我们还包括了由Slice编译器生成的 Printer.h,其中含有我们的打</span><span style="font-size: 10px; font-weight: normal; ">每个 Slice源文件的一开始都有一条用于包括 Ice.h的指令,在Ice.h中包含了Ice run time的各种定义。 </span><span style="font-size: 10px; font-weight: normal; "&

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值