环境安装 

第一步,基于Windows下的安装,所以下载windows版的Ice,官网最新版本是Ice3.5.1-6
https://download.zeroc.com/Ice/3.5/Ice-3.5.1-6.msi

我安装的ice3.7.6版本

第二步,安装Ice:
               常规安装即可,可以选择安装目录,本次安装是在C:\Program Files (x86)\Ice-3.5.1\Ice-3.5.1

第三步,设置Ice的环境变量:
                主要有环境变量需要设置:path、classpath、ICE_HOME
               例如:
ICE_HOME:C:\Program Files (x86)\Ice-3.5.1\Ice-3.5.1
path:%ICE_HOME%/bin;

第四步,检验:
在命令行中输入: icegridnode --version 
       如果现实当前安装的ice版本号,那么就说明安装成功。

实现ICE hello world DEMO

参考官网:

Introduction - Ice (zeroc.com)

随意新建一个C++ 控制台程序

在创建项目根目录创建一个接口客户端和服务端通信约定的接口协议参考官网如下

module Demo

{

interface Printer

{

void printString(string s);

}

}

从根目录——进入CMD控制台:

输入命令:slice2cpp Printer.ice

得到两个文件Printer.h和Printer.cpp

新建一个客户端控制台程序, 新建一个服务端控制台程序:

如下图所示: 其中Printer.h 和Printer.cpp拷贝生产的文件进入项目即可,如果拷贝不生效,可以新建一样文件再拷贝内容进入即可。

再客户端创建Client.cpp

拷贝如下内容:

#include <Ice/Ice.h>

#include "Printer.h"

#include <iostream>

#include <string>

using namespace std;

using namespace Demo;

int main(int argc, char * argv[])

{

int status = 0;

Ice::CommunicatorPtr ic;

try {

ic = Ice::initialize(argc, argv);

Ice::ObjectPrx base = ic->stringToProxy("SimplePrinter:default -p 11000");

PrinterPrx printer = PrinterPrx::checkedCast(base);

if (!printer)

throw "invalid proxy";

printer->printString("Hello World!");

}

catch (const Ice::Exception& ex)

{

cerr << ex << endl;

status = 1;

}

catch (const char* msg)

{

cerr << msg << endl;

status = 1;

}

if (ic)

ic->destroy();

return status;

}

在服务端创建一个server.cpp

拷贝如下内容:

#include <Ice/Ice.h>

#include "Printer.h"

#include <iostream>

#include <string>

using namespace std;

using namespace Demo;

class PrinterI : public Printer

{

public:

virtual void printString(const string& s, const Ice::Current&);

};

void

PrinterI::

printString(const string& s, const Ice::Current&)

{

cout << s << endl;

}

int

main(int argc, char* argv[])

{

try

{

Ice::CommunicatorHolder ich(argc, argv);

Ice::ObjectAdapterPtr adapter = ich->createObjectAdapterWithEndpoints("SimplePrinterAdapter", "default -p 11000");

Ice::ObjectPtr object = new PrinterI;

adapter->add(object, Ice::stringToIdentity("SimplePrinter"));

adapter->activate();

cout << "listen 10000 port" << endl;

ich->waitForShutdown();

}

catch (const std::exception& e)

{

cerr << e.what() << endl;

return 1;

}

return 0;

}

项目加载ICE

上面都准备好了,可能项目ICE相关依赖无法找到,通过NuGet程序包 ,搜索ICE 按照项目依赖即可。

输入ICE ,安装相关依赖(我在测试发现,每次新建一个项目都要安装相关依赖,这个待后面解决)

注意事项:

如果在测试过程发现等很久才链接,考虑一下是否端口占用,然后修改端口即可。

ICE 3.7.4 实现客户服务端hello world相关推荐

  1. python-socket客户服务端的传输原理异常关闭的情况

    复习三次握手四次挥手 思考 为什么要三次手握 为什么要四次挥手 案例演练 步骤 一, 来一个tcp服务端与客户端的代码,实现通信循环 服务端 import socket info_size = 102 ...

  2. 完整mes代码(含客户端和server端_Ice简介+Qt代码示例

    一.ICE是什么? ICE是ZEROC的开源通讯协议产品,它的全称是:The Internet Communications Engine,翻译为中文是互联网通讯引擎,是一个面向对象的中间件,它封装并 ...

  3. PHP中间件ICE,ICE的安装配置,ICE常见编译和运行(异常)错误(自测Php版本安装部分,因为php版本跟ice版本不一样失败)

    ICE(Internet Communications Engine)是Zeroc提供的一款高性能的中间件.使用ICE能使得php(或c++,java,python)与java,c++,.net,py ...

  4. PHP中间件--ICE

    ICE(Internet Communications Engine)是Zeroc提供的一款高性能的中间件.使用ICE能使得php(或c++,java,python)与java,c++,.net,py ...

  5. ZeroC Ice 暂记

    摘自: http://weibo.com/p/1001603869896789339575 原文地址: http://www.oschina.net/question/865233_242146 吴治 ...

  6. WebRtc以Trickle ICE形式去进行pair

    文章目录 简介 时序图 伪代码 主动方 被动方 简介 Trickle ICE(Interactive Connectivity Establishment)是WebRTC的一种流程,它允许WebRTC ...

  7. 魔法引用函数magic_quotes_gpc和magic_quotes_runtime的区别和用法

    PHP提供两个方便我们引用数据的魔法引用函数magic_quotes_gpc和magic_quotes_runtime, 这两个函数如果在php.ini设置为ON的时候,就会为我们引用的数据碰到单引号 ...

  8. 自动化运维之SaltStack,批量安装httpd实战

    SaltStack原理 SaltStack由Master和Minion构成,Master 是服务端, 表示一台服务器:Minion是客户服务端,表示多台服务器.在Master上发送命令给符合条件的Mi ...

  9. http提交json格式数据自动加\

    magic_quotes_gpc 设置为 OFF 1. 对于PHP magic_quotes_gpc=on的情况, 我们可以不对输入和输出数据库的字符串数据作addslashes()和stripsla ...

  10. magic_quotes_gpc和magic_quotes_runtime的区别和用法详解

    当你的数据中有一些     "  ' 这样的字符要写入到数据库里面,又想不被过滤掉的时候,它就很有用,会在这些字符前自动加上,如 中国地大物博"哈哈" 中国\地大物博&q ...

最新文章

  1. Android studio 下 JNI 开发实例
  2. linux/hpux 添加用户
  3. 产品体验分析之7步走(附PPT)
  4. C语言一趟冒泡交换最小值,C语言单链表冒泡排序为啥以下代码实现不了?
  5. 数据库创建索引有什么优点和缺点
  6. Linux:计划任务之at
  7. 大学二级计算机基础知识,浙江省大学生计算机基础知识与应用能力等级考试二级(V......
  8. 机器学习和数据挖掘的联系与区别
  9. C++公有、私有、保护继承的关系
  10. NYOJ 822 画图
  11. 在线教学生计算机,洪恩老兔轻松教你学电脑
  12. 极市直播丨南京理工大学魏秀参、沈阳:大规模细粒度图像检索
  13. Notepad++下载markdown viewer plugin
  14. 第一次基因数据处理从集群到数据处理结果---构建菌群物种丰度的图谱
  15. coldfusion_ColdFusion组件-简介
  16. ov7725摄像头--图像中间亮四周暗
  17. java实现docx文档下载
  18. 数字藏品|NFT整个行业的调研报告 数字藏品有价值吗 数字藏品是什么 百度数字藏品
  19. bazel 构建问题总结
  20. Websocket安装说明

热门文章

  1. 商迪3D三维虚拟现实VR景区全景漫游展示
  2. PX4-固定翼的姿态控制
  3. 【自然语言处理】【多模态】Product1M:基于跨模态预训练的弱监督实例级产品检索
  4. java 余弦值_获取Java中给定值的双曲余弦值
  5. 第一篇 外贸企业出口退税
  6. 关于 nth-child(n)的几种写法。
  7. Shadow Map阴影贴图技术之探
  8. python模拟鼠标中轴滚动
  9. 12306验证码的一些思考
  10. Excel如何从复杂文本中提取数字