每天都在用ICE,确又老是忘记,今天开始,把每次遇到的问题记录下来,免得每次碰到同样的问题去度娘、谷歌老半天。
先记录一段最简单的ICE进程间通讯实例(整理自ice开发指南),只针对java开发语言
实现目标:客户端进程像服务端进程发送一个hello world字符串,服务端收到之后在控制台打印出来
1.定义slice(Printer.ice),如下:
[["java:package:com.hydb.ice.intf"]]
module demo{
interface Printer{
void printString(string s);
};
};
注:上面的定义作为进程间通讯的接口描述文件,通过slice2java把定义转译成java接口文件,slice2java的使用方式大致如下:
$ mkdir generated
$ slice2java --output-dir generated Printer.ice
如果用eclipse编译器,安装一个插件就更简单了
2.服务端实现
public class PrinterServer {
public static void main(String[] args) {
int status = 0;
Ice.Communicator ic = null;
try{
ic = Ice.Util.initialize(args);
Ice.ObjectAdapter adapter = ic.createObjectAdapterWithEndpoints("PrinterAdapter",
"default -p 1000");
Ice.Object object = new PrinterI();
adapter.add(object,ic.stringToIdentity("printer"));
adapter.activate();
ic.waitForShutdown();
}catch(Exception e){
e.printStackTrace();
status = 1;
}
if(ic != null){
ic.destroy();
}
System.exit(status);
}
}
3.客户端实现
public class PrintClient {
public static void main(String[] args) {
int status = 0;
Communicator ic = null;
try{
ic = Ice.Util.initialize(args);
ObjectPrx basePrx = ic.stringToProxy("printer:default -p 1000");
PrinterPrx printer = PrinterPrxHelper.checkedCast(basePrx);
if(printer == null)
throw new RuntimeException("Invalid proxy");
printer.printString("hello world");
}catch(Exception e){
status = 1;
e.printStackTrace();
}
if(ic != null){
try{
ic.destroy();
}catch(Exception e){}
}
System.exit(status);
}
}
4.验证
启动服务端,再启动客户端,就可以在服务端控制台输出 hello world
分享到:
相关推荐
javase基础学习笔记
接着,“月光软件站 - 编程文档 - Java - ICE 2_0学习笔记1(HelloWorld).htm”很可能是一个入门教程,引导读者通过一个简单的"Hello, World!"示例来熟悉Java ICE的使用。这个例子通常会展示如何创建ICE服务器,...
Pudn.com是一个分享技术文档和资源的平台,这个文件可能包含了ICE相关的学习资源、教程或者代码示例的链接,有助于扩展对ICE的深入学习。 在实际开发中,ICE的易用性和高性能使其在许多领域得到应用,例如物联网、...
总结来说,"ICE中间件资料大全"是一个全面了解和学习ICE的宝贵资源,无论是初学者还是经验丰富的开发者,都能从中获取到有价值的信息。通过深入学习和实践,开发者可以利用ICE构建出高效、稳定的分布式系统,提升...
**IAR for AVR学习笔记** IAR for AVR是一款专业级的嵌入式开发工具,专为Atmel的AVR微控制器设计。这个学习笔记旨在帮助初学者掌握如何在IAR集成开发环境中(IDE)进行AVR微控制器的编程和调试。下面我们将详细...
这篇学习笔记主要涉及的是基于SN8P...整体来看,这个学习笔记涵盖了SN8P1919微控制器的初始化、主循环处理、中断处理、特殊功能寄存器的使用以及与外部设备的交互等多个重要方面,是一份比较全面的嵌入式系统开发参考。
在"WebRTC学习笔记01-最简单实现一对一视频通讯代码"中,我们将探讨WebRTC的基础知识以及如何通过简单的代码实现一对一视频通话。 首先,WebRTC的核心组件包括: 1. **RTCPeerConnection**:这是WebRTC中最关键的...
总之,“开始玩ICE”意味着开始学习和实践使用ICE框架进行分布式系统开发,这涉及到理解ICE的原理,学习其接口定义语言,编写服务端和客户端代码,并进行有效的测试和调试。通过这个过程中涉及的文件,我们可以逐步...
这篇“webrtc学习笔记一”主要关注的是视频流处理,是WebRTC技术中的核心部分。在深入讨论之前,先了解一下WebRTC的基本架构和组成部分。 1. **基础概念**: - **Peer Connection**: 是WebRTC的核心组件,负责...
树莓派学习笔记 树莓派是什么? 树莓派(Raspberry Pi)是一种信用卡大小的卡片式电脑,基于 Linux 系统,由英国的慈善组织“Raspberry Pi 基金会”开发,旨在为学生计算机编程教育提供支持。该基金会的宗旨是让...
**SDP学习笔记** SDP(Session Description Protocol)是一种用于描述多媒体会话的协议,它在互联网通信领域中起着至关重要的作用。本笔记将深入浅出地解析SDP的基本概念、结构以及应用,旨在提供比其他教程更为...
这篇学习笔记主要涵盖了SCMAD开发中的一些核心技术和资源需求,以下是对这些知识点的详细解释: 1. **资源最小需求**:在SCMAD开发中,对应用的UI、颜色、内存、文件大小等方面有明确的最低要求。例如,LCD屏幕至少...
1. 创建一个新的Tab对象。 2. 设置Tab的描述,这通常是辅助功能的目的,而不是直接显示在界面上。 3. 设置Tab监听器,当用户切换到该Tab时,会触发相应的事件处理。 4. 为Tab设置图标,增强视觉识别度。 5. 将新创建...
5、Hadoop生态圈的学习笔记,主要记录HDFS、MapReduce、Yarn相关读书笔记及源码分析等 5.1 HDFS Hadoop快速入门 HDFSOverView Hadoop广义生态系统 Hadoop高可用配置 HadoopCommon分析 HDFS集群相关管理 HDFS Shell ...
标题中的“ice_chen_linux_command”暗示了这是一个关于Linux命令的学习资源,可能是由用户“ice_chen”整理的个人笔记或者教程。描述中提到“用于查询Linux下常用命令操作”,意味着这个压缩包可能包含了一个详细的...
一个Service是App的一个组件,没有任何的UI,可以长时间的在后台无限期运行。可以在主线程之外的单独的线程中执行,也可以在应用程序组件(如活动)中进行管理。例如音乐播放器,可以让音乐在后台进行播放。 Service的...