1.下载安装Ice-3.5.1.msi http://www.zeroc.com/download.html

2.添加安装路径到环境变量path,D:\Program Files (x86)\ZeroC\Ice-3.5.1\bin\vc110

3.编写一个ice文件,可以用文件编辑器

module MCal
{
interface Cal
{
int add(int num1,int num2);
int sub(int num1,int num2);
};
};

4.用cmd工具编译成特定语言,如C++

slice2cpp Caculator.ice

生成两个文件,Caculator.h,Caculator.cpp,这两个文件将包含到你的工程中.cpp可能包含.h路径不对<>,改成双引号“”

5.引用lib

#include <Ice/Ice.h>
#include <Ice/Application.h>

/*#include <iostream>
using namespace std;*/

#pragma comment(lib,"iced.lib" )
#pragma comment(lib,"iceutild.lib" )

6.工程包含路径

7.编写server工程,创建实现类

//.h
#include "caculator.h"
using namespace MCal;
class CalI :
public Cal
{
public:
CalI(void);
~CalI(void);
virtual int add(int num1,int num2,const Ice::Current&);
virtual int sub(int num1,int num2,const Ice::Current&);
private:
int num1d;
int num2d;
}; //.cpp
CalI::CalI(void)
{
num1d=0;
num2d=0;
}
CalI::~CalI(void)
{
} int CalI::add(int num1, int num2, const Ice::Current &)
{
int sumv=0;
sumv=num1+num2;
return sumv;
}
int CalI::sub(int num1,int num2,const Ice::Current&)
{
int difv=0;
if (num1>num2)
{
difv=num1-num2;
return difv;
}
else
{
cout<<"there is some wrong!"<<endl;
return 0;
}
}

  

8.服务器监听

#include "CalI.h"
.....main函数
Ice::CommunicatorPtr ic;
ic = Ice::initialize(); Ice::ObjectAdapterPtr adapter = ic->createObjectAdapterWithEndpoints("Caladapter","default -p 10000");
Ice::ObjectPtr object = new CalI();
adapter->add(object,ic->stringToIdentity("Cal"));
adapter->activate();
printf( " server.start ok \n " );
ic->waitForShutdown(); if (ic)
{
ic->destroy();
}
.......

9.客户端程序,配置和服务器一样

调用

using namespace MCal;
int _tmain(int argc, _TCHAR* argv[])
{
Ice::CommunicatorPtr ic; ic = Ice::initialize();
Ice::ObjectPrx base = ic -> stringToProxy( "Cal:default -p 10000" );
CalPrx calculator = CalPrx::checkedCast(base);
if(!calculator)
throw "Invalid proxy!"; cout<<calculator->add(,)<<endl;
cout<<calculator->sub(,)<<endl; printf( " client.start ok \n " );
getchar();
if (ic)
{
ic -> destroy();
}
return ;
}

10.C#调用

slice2cs Caculator.ice 生成.cs接口文件,包含到工程

工程添加ICE引用,文件在D:\Program Files (x86)\ZeroC\Ice-3.5.1\Assemblies\Ice.dll

using Ice;
using MCal;

Ice.Communicator ic = null;
ic = Ice.Util.initialize(ref args); Ice.ObjectPrx obj = ic.stringToProxy("Cal:default -p 10000");
CalPrx calculator = CalPrxHelper.checkedCast(obj);
Console.WriteLine("1+2="+calculator.add(, ).ToString());
Console.WriteLine("56-12=" + calculator.sub(, ).ToString()); if (ic != null)
ic.destroy();
Console.ReadKey();

VS2012配置使用ICE通信接口的更多相关文章

  1. VS2012 配置 OpenCV3.0

    VS2012 配置 opencv3.0,相比之前的版本,3.0的配置简单了好多. 通过配置属性文件,可以做到一次配置,重复使用! 根据文章的操作在 win7 64bit VS2012 下成功配置 op ...

  2. VS2012配置Lua环境

    1.VS2012配置BabeLua插件 2.VS2012配置Lua 1.VS2012配置BabeLua插件 BabeLua插件简介: 安装方法: 关闭VS2012后直接安装BabeLua插件. 下载地 ...

  3. vs2012配置opencv及简单测试

    为visual studio2012搭建openCV平台,实现打开图片. 实现步骤: 1.1.配置环境变量 基于win7操作系统的环境配置步骤: 1.1.1 计算机—>属性—>更改设置—& ...

  4. 一、Open CV3.0.0 与 VS2012配置

    原创:博乐Bar,转载请注明出处. 第一步,准备软件及开发环境 1.OpenCV 3.0.0 下载地址:http://www.opencv.org.cn/index.php/Download ,下载最 ...

  5. VS2012配置OpenCV、GDAL开发环境

    VS2012和opencv-2.4.10 第一步:配置之前的准备工作. 完成VS2012的安装,以及opencv-2.4.10的下载和文件提取, 双击此文件,设置文件路径,即可得到提取文件,提取后的文 ...

  6. 安装VS2012以后打开office 2007 的任何程序都跳出VS2012配置界面的解决方案

    前两天闲来无事,下载了vs2012,打算学点mvc4的东西,装好以后,问题来了,打开word文档,直接弹出个windows正在配置vs2012的界面,等就等一下吧,结束以后还能正常看,结果谁知道,每次 ...

  7. VS2012配置Cocos2d-x的问题

    cocos2d-x老是配置不成功,解决方案参考:http://blog.csdn.net/yangjingui/article/details/9408007 完整配置流程: 1 下载,最好通过SVN ...

  8. vs2012配置使用entity framework 6

    项目中使用mysql作为数据库,想快速地实现一些数据服务,为了节省开发时间,提升开发效率,性能不是考虑的重点,所以选择了使用ORM框架:Entity Framework.指定了DB的table des ...

  9. Win8+VS2012 配置OpenGL SuperBible5 环境

    (1)glew: 版本:1.7.0-win32 下载地址:https://sourceforge.net/projects/glew/files/glew/ 安装步骤: 将include文件夹下的.h ...

随机推荐

  1. svn的安装配置

    之前找了一些svn的资料,一直配置不成功.然后找到了这个链接,配置成功了.还可以. http://www.cnblogs.com/zhoulf/archive/2013/02/02/2889949.h ...

  2. 对Hadoop体系的一点认识

    前言:Hadoop体系核心大多源自Google的思想,里面的思想的确很精彩!比如分布式计算,云的思想等,比起其他简单技术,更使得我想写这文章, 虽然这个东东在一般公司不可能用到! 首先由于hadoop ...

  3. apache 指定的网络名不再可用 原因及解决方法

    1.出现问题状况: 出现问题网站:http://www.ayyzz.cn/ 前段时间作文大全网出现有时候比较慢,有时候“找不到网页”404错误:另外在error.log里也报错: [Mon May 0 ...

  4. VBA操作单元格

    行或列的Group化 ws.Rows("row1:row2").group row1:Group化的开始行                row2:Group化的结束行 ws.Co ...

  5. mysql行列调换方法

    行变列,列变行 财务样式模板: CREATE TABLE `grade` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `name` VARCHAR ...

  6. 百度地图API 与 jquery 同时使用时报 TypeError $(...) is null错误 失效的原因及解决办法

    在引用百度地图API后,发现jquery 根据id 找不到 form.但是对于别的控件没有问题. 在排除了 html加载的问题后. 上网查找 发现以下解决办法: 原因应该是有冲突的插件. 解决办法将 ...

  7. cookie,session原理,以及如何使用chrome查看。

    首先,先补充下chrome浏览器的使用. 1.1.php源码: <?php $cookieDomain = '.elf.com'; setcookie(, '/', $cookieDomain) ...

  8. 【extjs】:获取列名,时间转换

    1.日期字符戳转时间 renderer : function(value, arg2) {                if (value != null && value != ' ...

  9. 数据存储--沙盒sandBox

    默认情况下,每个沙盒必含有3个文件夹:Documents, Library 和 tmp 一.沙盒(sandbox)出于安全的目的,应用程序只能将自己的数据和偏好设置写入到几个特定的位置上.当应用程序被 ...

  10. 使用nginx为ArcGIS Server做反向代理

    1.下载nginx软件:官网地址http://nginx.org/ 2.修改conf文件夹下nginx.conf配置信息, 配置文件中以下内容: server { listen       80; s ...