Ice学习--简单的例子(服务端)
来源:互联网 发布:秦皇岛海洋食品厂淘宝 编辑:程序博客网 时间:2024/06/11 23:45
Zeroc Ice是一款通信组件。其开发主要分一下几步:
1) 编写slice文件
2) 通过slice2cpp工具将slice文件翻译成相应的.h和.cpp文件
3) 编写服务端
4) 编写客户端
以下仅以官方上的例子做说明:
1、 slice文件定义printer.ice:
module Demo
{
interface Printer
{
void printString(string str);
};
};
注意:
a、 文件中必须要有根module,否则翻译失败
b、 module翻译后对应C++的命名空间,interface翻译后对应C++的类名
c、 module后interface中的} 必须跟';'符号,否则翻译失败
2、 通过slice2cpp工具将printer.ice翻译成对应的.h和.cpp文件
slice2cpp 命令如下:start slice2cpp printer.ice --stream
可以发现对应目录下多出来两个文件:printer.h printer.cpp
3、 服务器编写:
服务器编写首先要实现Printer接口:
class PrinterImpl : public Demo::Printer
{
void printerString(const std::string &strIn, const Ice::Current /*= Ice::Current()*/)
{
std::cout<<strIn;
}
};
服务器主体代码:
void main(int args, char* argv)
{
Ice::CommunicatorPtr ic;
try
{
ic = Ice::Initialize(args, argv); // ice组件初始化工作
// 创建代理适配器,一个ic组件可以有多个代理适配器
// PrinterAdapterPrx作为代理适配器的名称,可以自由定义,但是一个ic组件下的代理适配器名称必须唯一
// default -p 10000 代理适配器监听端口配置,端口必须唯一
Ice::ObjectAdapterPrx oAdapterPrx = ic->createObjectAdatperWithEndpoints("PrinterAdapterPrx", "default -p 10000");
// 创建服务
Ice::ObjectPtr oServant = new PrinterImpl();
// 代理适配器管理服务
// PrinterServant为服务的名称,一个代理适配器下可以管理多个服务
// 同一个代理适配器下的多个服务名称必须唯一
oAdapterPrx->add(oServant, ic->stringToIdentity("PrinterServant"));
// 激活代理适配器
oAdapterPrx->activate();
// 主线程等待客户请求
ic->waitForShutdown();
}
catch(Ice::LocalException &ex)
{
std::cout << ex.ice_name();
}
if (NULL != ic)
{
// 关闭组件
ic->destroy();
}
- Ice学习--简单的例子(服务端)
- Ice学习--简单的例子(客户端)
- (6)最简单的ICE例子
- 公司的ice例子
- ICE第二篇--一个"hello world"的简单例子
- 基于Socket简单的客户端-服务端例子
- 很不多的ICE架构入门学习例子-ping程序
- 很不多的ICE架构入门学习例子-ping程序
- zeroc ice 客户端与服务端通信例子(c++)
- Ice笔记--服务端的Slice-to-C++
- 从janus中学习webrtc的ice简单交换过程
- 一个简单的json服务端和客户端的例子
- 一个简单的socket客户端和服务端的例子
- 关于Socket的客户端服务端的简单例子“本机回射”
- 一个简单的socket客户端和服务端的例子
- 最简单的socket客户端与服务端例子
- UDP 与 TCP的连接简单例子(服务端/客户端) VC
- 动态生成WCF服务端的简单小例子
- Thread、Handler和HandlerThread关系何在?
- HDU 5829 Rikka with Subset(NTT)
- VC静态库开发与使用
- UVA 455 Periodic Strings
- 彻底明白Android中AIDL及其使用
- Ice学习--简单的例子(服务端)
- Spring组件和IOC容器
- 关键字
- ios学习笔记
- 进程间通信笔记(3)—POSIX消息队列
- Linux设备模型-4-kobj_attribute
- 配置 Nginx日志相关信息
- Android Studio生成JavaDoc文档
- Maven环境搭建和介绍