使用Ice::Application可以简化一部分代码:
服务端:

#pragma once
#include <Ice/Application.h>class IceClientApp:public Ice::Application {public:IceClientApp();~IceClientApp();virtual int run(int argc, char* argv[])override;};
#include "IceClientApp.h"
#include <Ice/Ice.h>
#include <QString>
#include "Printer.h"static int count = 0;IceClientApp::IceClientApp() {}IceClientApp::~IceClientApp() {}int IceClientApp::run(int argc, char* argv[]) {Ice::CommunicatorPtr ic = communicator();Ice::ObjectPrx base = ic->stringToProxy("TestPrinter:tcp -h localhost -p 10002");Demo::PrinterPrx printer = Demo::PrinterPrx::checkedCast(base);if (!printer) {throw "Invalid Proxy!";}while (true){std::string strCount = QString::number(++count).toStdString();printer->printString(strCount + " Hello World!");std::cout << printer->add(count, count) << std::endl;Sleep(1000);}return 0;
}

ice文件

module Demo {interface Printer {void printString(string s);
int add(int num1,int num2);
int sub(int num1,int num2);
};
};
#include "IceClientApp.h"int main(int argc, char *argv[]) {IceClientApp app;return app.main(argc,argv);
}

客户端:

#pragma once
#include <Ice/Application.h>class IceApp:public Ice::Application {public:IceApp();~IceApp();virtual int run(int argc, char* argv[])override;};
#include "IceApp.h"
#include "TestPrinter.h"
#include <Ice/Ice.h>IceApp::IceApp() {}IceApp::~IceApp() {}int IceApp::run(int argc, char* argv[]) {Ice::CommunicatorPtr&ic = communicator();Ice::ObjectAdapterPtr objAdapter = ic->createObjectAdapterWithEndpoints("TestAdapter", "tcp -h localhost -p 10002");Ice::ObjectPtr obj =new TestPrinter();objAdapter->add(obj, ic->stringToIdentity("TestPrinter"));objAdapter->activate();ic->waitForShutdown();return 0;
}

TestPrinter

#pragma once
#include "Printer.h"class TestPrinter :   public Demo::Printer {public:TestPrinter();~TestPrinter();virtual void printString(const ::std::string& s, const ::Ice::Current& current = ::Ice::emptyCurrent) override;virtual ::Ice::Int add(::Ice::Int num1, ::Ice::Int num2, const ::Ice::Current& current = ::Ice::emptyCurrent) override;virtual ::Ice::Int sub(::Ice::Int num1, ::Ice::Int num2, const ::Ice::Current& current = ::Ice::emptyCurrent)override;
};
#include "TestPrinter.h"TestPrinter::TestPrinter() {}TestPrinter::~TestPrinter() {}void TestPrinter::printString(const ::std::string& s, const ::Ice::Current& current /*= ::Ice::emptyCurrent*/) {std::cout << s << std::endl;
}::Ice::Int TestPrinter::add(::Ice::Int num1, ::Ice::Int num2, const ::Ice::Current& current /*= ::Ice::emptyCurrent*/) {return num1 + num2;
}::Ice::Int TestPrinter::sub(::Ice::Int num1, ::Ice::Int num2, const ::Ice::Current& current /*= ::Ice::emptyCurrent*/) {return num1 - num2;
}

main

#include "IceApp.h"int main(int argc, char *argv[]) {IceApp app;return app.main(argc, argv);
}


源码下载
aaa

Ice通信之Ice::Application相关推荐

  1. ICE通信之IceBox服务器

    一. 简介 IceBox服务器用于配置服务.并把对它们的管理集中在一起,服务被开发成可动态加载的组件,通过属性为IceBox服务配置它负责加载和管理的应用特有的服务.要把多个服务组合成一个应用,可以通 ...

  2. Ice自学第一步——Windows下安装Ice和设置Ice的环境变量

    第一步,基于Windows下的安装,所以下载windows版的Ice,官网最新版本是Ice3.4.2: http://www.zeroc.com/download/Ice/3.4/Ice-3.4.2. ...

  3. ICE通信之IceGrid服务(一)

    一. IceGrid功能 1. 定位服务(Location service ) 作为一个ICE定位服务,IceGrid的实施使客户能够间接地绑定到他们的服务器,提高应用程序的灵活性和适应不断变化的需求 ...

  4. ice通信原理_通信原理_知到网课答案

    听音,根据你听到的内容选出正确的词填空.1. areyougoing? Tothe .2. istheweather? It'shotandsunny.3.does 听问句选答句.() 1. a. D ...

  5. ice通信原理_变频开关电源工作原理,开关电源自我检修

    一.变频开关电源工作原理 开关电源的电路比较复杂,但其基本工作原理并不难理解,下图5-1说明了开关电源的基本工作原理. 在图5-1(a)中,当开关S闭合时,电源E通过S给C充电,在C上得到正向上和负向 ...

  6. ICE专题:ICE简介

    ICE(Internet Communications Engine)是一个为现实中程序员而写的中间件平台.作为一个高性能的互联网通信平台,ICE包含了很多分层的服务和插件(Plug-ins),并且简 ...

  7. ICE专题:ICE起步

    ICE初步 最早开始接触ICE是在2005,3月份,当时一个朋友向另一个正打算研究corba的朋友强烈的推荐了ICE. 参考:http://www.zeroc.com/ 1.什么是ICE? ICE(i ...

  8. zeroc ice php,ZeroC ICE+PHP整合

    最近为了作分布式框架的技术选型,特意研究了多个分布式框架,恰好研究了Zeroc Ice 框架,特意记录以便后续查阅php 本文主要介绍win环境下PHP与ICE 环境的整合apache 首先咱们须要确 ...

  9. linux下如何启动ice服务器,linux: ICE搭建

    环境:JDK1.8 yum install gcc gcc-c++ glibc-headers -y yum groupinstall "Development Tools" -y ...

  10. java ice c_Java的Ice包接收中文乱码

    这次在编写java版ems的时候,遇到中文接收乱码问题(环境,Python客户端,Java服务端).刚好对编码问题没什么概念,硬着头皮乱搞一气,无果.当晚请到无线徐工前来帮忙,也是折腾了很久,大概知道 ...

最新文章

  1. const reference const
  2. 2020年必学的 10 大算法
  3. Prepare the Knowledge Base for Success
  4. 实录分享 | 计算未来轻沙龙:深度学习工具专场(PPT下载)
  5. httppost数据上传 unity_Unity中国增强版发布
  6. 数据结构笔记--栈的总结及java数组实现简单栈结构
  7. c#(6)——数组的应用和二维数组
  8. 第十天 Oracle安装前准备工作
  9. jQuery选择器理解
  10. hadoop-0.20.2完全分布式集群
  11. python建立虚拟环境付款_python 创建虚拟环境(virtualenv)
  12. mysql 自动维护uuid_MySQL实现自动使用uuid作为主键以及解决不能调用触发器的一点思路...
  13. java触发器如何创建表_Java中 创建Oracle触发器的问题。
  14. 软件项目管理第4版课后习题[附解析]第一章
  15. 基于matlab的Guass-Seidel(高斯--赛德尔) 迭代法求解线性方程组
  16. 中文转拼音全拼和首字母
  17. PHP接口_短信发送接口
  18. 【SQL自学打卡|DAY17】——多表查询
  19. Cesium geojson数据的添加与移除
  20. Python基础练习

热门文章

  1. raw格式镜像文件转vmdk
  2. OpenWRT安装Home Assistant
  3. 16位算术逻辑运算实验
  4. opencv将16位灰度图片转化为8位
  5. 读Leveraging Unimodal Self-Supervised Learning for Multimodal AVSR论文
  6. python利用百度翻译器,爬取需要翻译的关键字
  7. 用html5制作古诗,古诗词书签制作
  8. 求解字谜游戏问题-数据结构与算法分析-C语言描述 Mark Allen Weiss-第一章练习题
  9. 立体匹配 -- PSM-Net 网络模型代码剖析
  10. 2021年计算机保研面试题