Ubuntu上安装Ice 3.3很方便 ,软件源里有,直接apt-get就可以
要安装Ice 3.4需要自己下载源码,编译安装,安装之前要安装Ice所依赖的软件包
apt-get install libdb4.6++-dev libbz2-dev bzip2 libssl-dev libreadline5-dev libexpat1-dev mcppI
然后:下载Ice-3.4.1.tar.gz
下载后安装解压,进入cpp目录,运行make ,make install 进行安装,默认安装路径在/opt/Ice-3.4.1
安装完后添加环境变量:
vi ~/.bashrc
添加如下内容:
export ICE_HOME=/opt/Ice-3.4.1
export PATH=$ICE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ICE_HOME/lib:$LD_LIBRARY_PATH
然后你就可以使用如下命令去生成代码了:
slice2cpp slice2freeze slice2html slice2php slice2rb
slice2cs slice2freezej slice2java slice2py
如果我们使用java开发ice接口需要Ice.jar,进入java目录,运行ant build.xml ,会在lib目录下生成Ice.jar
如果我们使用python开发ice接口需要安装ice-python 使用命令:sudo apt-get install ice-python 安装
下面来做一个小例子:
slice文件:
module com{
module demo{
module mingfei{
module core{
module generated{
struct Person{
string name;
int age;
};
sequence<Person> personList;
dictionary<string,Person> personMap;
interface HelloMingFei{
string hello(string name);
personList getPersonList();
personMap getPersonMap();
};
};
};
};
};
};
我们使用python开发server端:
server.py:
import sys,traceback,Ice,IcePy
Ice.loadSlice("Test.ice")
import com.demo.mingfei.core.generated
class HelloMingFeiI(com.demo.mingfei.core.generated.HelloMingFei ):
def hello(slef ,s,current=None):
return "hello %s" % s
def getPersonList(self,current=None):
p1 = com.demo.mingfei.core.generated.Person("mingfei",1)
p2 = com.demo.mingfei.core.generated.Person("mingtao",2)
personList = [p1,p2]
return personList
def getPersonMap(self,current=None):
p1 = com.demo.mingfei.core.generated.Person("mingfei",1)
personDict = {"mingfei":p1}
p2 = com.demo.mingfei.core.generated.Person("mingtao",2)
personDict["mingtao"] = p2
return personDict
status = 0
ice = None
try:
ic = Ice.initialize(sys.argv)
adapter = ic.createObjectAdapterWithEndpoints("HelloMingFeiAdapter","default -p 10000")
objectI = HelloMingFeiI()
adapter.add(objectI,ic.stringToIdentity("HelloMingFei"))
adapter.activate()
ic.waitForShutdown()
except:
traceback.print_exc()
status = 1
if ic :
#Clean up
try:
ic.destroy()
except:
traceback.print_exc()
status = 1
sys.exit(status)
使用java来开发client:
首先使用slice2java Test.ice 生成java代码
Client.java:
package com.demo.mingfei.core.generated;
public class Client {
public static void main(String [] args){
int status = 0;
Ice.Communicator ic = null;
try {
ic = Ice.Util.initialize(args);
Ice.ObjectPrx base = ic.stringToProxy("HelloMingFei:default -p 10000");
HelloMingFeiPrx printer = HelloMingFeiPrxHelper.checkedCast(base) ;
if (printer == null) {
System.out.println("invalid proxy");
}
String out = printer.hello("mingfei");
System.out.println(out);
} catch (Ice.LocalException e) {
e.printStackTrace();
status = 1;
} catch (Exception e) {
System.err.print(e.getMessage());
status = 1;
} finally {
if (ic != null) {
ic.destroy();
}
}
System.exit(status);
}
}
再讲一讲使用java开发server:
首先使用slice2java Test.ice 生成java代码
package com.demo.mingfei.core.generated;
import java.util.HashMap;
import java.util.Map;
import Ice.Current;
public class Server extends _HelloMingFeiDisp{
@Override
public Person[] getPersonList(Current current) {
Person p1 = new Person();
p1.name = "mingtao";
p1.age = 2;
return new Person[]{p1};
}
@Override
public Map<String, Person> getPersonMap(Current current) {
Person p1 = new Person();
p1.name = "mingtao";
p1.age = 2;
Person p2 = new Person();
p2.name = "mingfei";
p2.age = 2;
Map<String,Person> map = new HashMap<String,Person>();
map.put("mingtao", p1);
map.put("mingfei", p2);
return map;
}
@Override
public String hello(String name, Current current) {
// TODO Auto-generated method stub
return "hello " + name;
}
public static void main(String [] args){
int status = 0;
Ice.Communicator ic = null;
try {
ic = Ice.Util.initialize(args);// 初始化参数
Ice.ObjectAdapter adapter = ic.createObjectAdapterWithEndpoints(
"HelloMingFeiAdapter", "default -p 10000");// 创造对象适配器
Ice.Object objcet = new Server();// 创建servant对象
adapter.add(objcet, Ice.Util.stringToIdentity("HelloMingFei"));// 适配器添加一个新的servant,给servant对象取个名字
adapter.activate();
System.out.println("connection success");
ic.waitForShutdown();
} catch (Ice.LocalException e) {
e.printStackTrace();
status = 1;
} catch (Exception e) {
System.err.print(e.getMessage());
status = 1;
} finally {
if (ic != null) {
ic.destroy();
}
}
System.exit(status);
}
}
使用python开发client:
client.py:
import sys,Ice,traceback
Ice.loadSlice("Test.ice")
import com.demo.mingfei.core.generated
status = 0
ice = None
try:
ic = Ice.initialize(sys.argv)
base = ic.stringToProxy("HelloMingFei:default -p 10000")
serviceI = com.demo.mingfei.core.generated.HelloMingFeiPrx.checkedCast(base)
if not serviceI:
raise RuntimeError("Invalid proxy")
print serviceI.hello("mingfei")
print "\r\n"
personList = serviceI.getPersonList()
personListSize = len(personList)
for i in range(len(personList)):
print "my name is %s ,and %d years old" %(personList[i].name , personList[i].age)
print "\r\n"
personDict = serviceI.getPersonMap()
print "my name is %s ,and %d years old" %( personDict["mingfei"].name , personDict["mingfei"].age)
print "my name is %s ,and %d years old" % (personDict["mingtao"].name , personDict["mingtao"].age)
except:
traceback.print_exc()
status = 1
if ic:
# Clean up
try:
ic.destroy()
except:
traceback.print_exc()
status = 1
sys.exit(status)
分享到:
相关推荐
在Ubuntu系统上安装Zeroc-ICE环境主要涉及以下知识点: ...安装Zeroc-ICE是进行相关开发或者搭建分布式系统的前提,因此对于想要在Ubuntu环境下利用Zeroc-ICE进行开发的用户来说,这些步骤是入门级别的必要知识。
本教程将详细介绍如何在Linux环境下搭建ICE平台,这对于进行ICE相关的开发工作至关重要。 首先,安装ICE的前提条件是拥有一个稳定且兼容的Linux操作系统。Ubuntu或CentOS等Linux发行版通常是开发环境的首选。确保...
编辑Demo的JavaScript文件,增加ICE Servers配置,以支持通过STUN和TURN服务器进行NAT穿越。 ```javascript vim kurento-rtp-receiver/src/main/resources/static/js/index.js ``` 在`function start()`函数内,...
这里提供了在Ubuntu环境下安装Janus的步骤: 1. **更新系统**:使用`sudo apt-get update`和`sudo apt-get upgrade`来确保系统软件包是最新的。 2. **安装基础工具**:安装`aptitude`、`git`、`gtk-doc-tools`、`...
首先,需要安装Ubuntu 11.04作为开发环境,推荐分配至少60GB的硬盘空间,1.5GB的内存和1.5GB的SWAP分区。安装完成后,通过`sudo passwd`设置root密码,并在root权限下进行后续操作。 2. **软件安装**: 使用`apt-...
编译过程包括在Windows系统下进行编译,以及在Linux环境下编译WebRTC源码,甚至是在Linux系统下编译适用于Android平台的WebRTC。 WebRTC开发部分是教程的核心,介绍了开发P2P视频软件需要处理的关键问题,比如用户...
开发环境搭建 视频教程 FPGA教程 参考 iCESugar 介绍iCESugar 是MuseLab基于Lattice iCE40UP5k设计的开源FPGA开发板,开发板小巧精致,资源丰富,板载RGB LED,Switch,TYPE-C-USB, Micro-USB,大部分IO以标准PMOD...
1. **Qt环境搭建**:了解如何安装Qt开发环境,创建一个新的Qt项目,并设置好编译器和链接器选项。 2. **PJSIP库的获取与配置**:学习如何下载PJSIP库,配置编译环境,以及将编译后的库文件链接到Qt项目中。 3. **...
以下是一个详细的指南,讲解如何在Ubuntu环境下搭建Android源码编译环境,下载Android 4.0.3(Ice Cream Sandwich,简称ICS)的源码,并进行编译。 1. **安装Ubuntu虚拟机**: - 首先,你需要在主机上安装一个支持...
通过实际操作,学生将学习如何在Linux环境下实现Powerlink的主站和从站通信,从而提升对实时网络通信系统的理解和应用能力。 **二、课程设计题目及要求** 1. **题目**:Linux操作系统下的Powerlink主站和从站通信 ...
1. **操作系统**: 通常,Android开发和编译需要在Linux环境下进行,如Ubuntu或Debian。确保安装了最新的稳定版本。 2. **工具链**: Android的交叉编译需要特定的工具链,包括GCC编译器、GNU Make等。安装对应SC8810...
**1.4 本地集成开发环境(IDE)** - **Visualstudio** - **概述**:Visual Studio是一种非常强大的IDE,适用于Windows平台上WebRTC项目的开发。 - **使用**:通过导入项目文件(.sln)启动项目,在IDE中完成编辑...
**Ubuntu 14.04 Desktop AMD64** 是一个广泛使用的Linux发行版,适合搭建服务器环境。 - **升级GCC版本**:GCC (GNU Compiler Collection) 是一个编译器集合,包含了C、C++等语言的编译器。对于Node.js的编译安装,...
本文将详细介绍如何在Linux环境下通过PHP调用Java的方法,并涉及必要的环境配置、工具安装以及示例代码。 #### 二、环境准备 为了能够顺利地在PHP中调用Java方法,我们需要先搭建好基础的运行环境: 1. **操作...