Ice通信之Ice::Application
使用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相关推荐
- ICE通信之IceBox服务器
一. 简介 IceBox服务器用于配置服务.并把对它们的管理集中在一起,服务被开发成可动态加载的组件,通过属性为IceBox服务配置它负责加载和管理的应用特有的服务.要把多个服务组合成一个应用,可以通 ...
- Ice自学第一步——Windows下安装Ice和设置Ice的环境变量
第一步,基于Windows下的安装,所以下载windows版的Ice,官网最新版本是Ice3.4.2: http://www.zeroc.com/download/Ice/3.4/Ice-3.4.2. ...
- ICE通信之IceGrid服务(一)
一. IceGrid功能 1. 定位服务(Location service ) 作为一个ICE定位服务,IceGrid的实施使客户能够间接地绑定到他们的服务器,提高应用程序的灵活性和适应不断变化的需求 ...
- ice通信原理_通信原理_知到网课答案
听音,根据你听到的内容选出正确的词填空.1. areyougoing? Tothe .2. istheweather? It'shotandsunny.3.does 听问句选答句.() 1. a. D ...
- ice通信原理_变频开关电源工作原理,开关电源自我检修
一.变频开关电源工作原理 开关电源的电路比较复杂,但其基本工作原理并不难理解,下图5-1说明了开关电源的基本工作原理. 在图5-1(a)中,当开关S闭合时,电源E通过S给C充电,在C上得到正向上和负向 ...
- ICE专题:ICE简介
ICE(Internet Communications Engine)是一个为现实中程序员而写的中间件平台.作为一个高性能的互联网通信平台,ICE包含了很多分层的服务和插件(Plug-ins),并且简 ...
- ICE专题:ICE起步
ICE初步 最早开始接触ICE是在2005,3月份,当时一个朋友向另一个正打算研究corba的朋友强烈的推荐了ICE. 参考:http://www.zeroc.com/ 1.什么是ICE? ICE(i ...
- zeroc ice php,ZeroC ICE+PHP整合
最近为了作分布式框架的技术选型,特意研究了多个分布式框架,恰好研究了Zeroc Ice 框架,特意记录以便后续查阅php 本文主要介绍win环境下PHP与ICE 环境的整合apache 首先咱们须要确 ...
- linux下如何启动ice服务器,linux: ICE搭建
环境:JDK1.8 yum install gcc gcc-c++ glibc-headers -y yum groupinstall "Development Tools" -y ...
- java ice c_Java的Ice包接收中文乱码
这次在编写java版ems的时候,遇到中文接收乱码问题(环境,Python客户端,Java服务端).刚好对编码问题没什么概念,硬着头皮乱搞一气,无果.当晚请到无线徐工前来帮忙,也是折腾了很久,大概知道 ...
最新文章
- const reference const
- 2020年必学的 10 大算法
- Prepare the Knowledge Base for Success
- 实录分享 | 计算未来轻沙龙:深度学习工具专场(PPT下载)
- httppost数据上传 unity_Unity中国增强版发布
- 数据结构笔记--栈的总结及java数组实现简单栈结构
- c#(6)——数组的应用和二维数组
- 第十天 Oracle安装前准备工作
- jQuery选择器理解
- hadoop-0.20.2完全分布式集群
- python建立虚拟环境付款_python 创建虚拟环境(virtualenv)
- mysql 自动维护uuid_MySQL实现自动使用uuid作为主键以及解决不能调用触发器的一点思路...
- java触发器如何创建表_Java中 创建Oracle触发器的问题。
- 软件项目管理第4版课后习题[附解析]第一章
- 基于matlab的Guass-Seidel(高斯--赛德尔) 迭代法求解线性方程组
- 中文转拼音全拼和首字母
- PHP接口_短信发送接口
- 【SQL自学打卡|DAY17】——多表查询
- Cesium geojson数据的添加与移除
- Python基础练习