已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
电子科技大学 计算机 学院标 准 实 验 报 告(实验)课程名称:中间件技术 (实验)项目名称:基于mico开源CORBA中间件编写一个分布式调用服务电子科技大学研究生院电 子 科 技 大 学实 验 报 告学生姓名学号实验中所参与的工作完成所有工作 一、实验目的:本实验的目的和任务是,通过利用基于mico的开源CORBA中间件编写一个分布式调用服务的小型软件,让学生理解中间件的基本原理,并掌握进行CORBA程序设计和开发的基本方法。二、实验内容:1)服务器实现一个网格,其结构如图1所示。网格有高度和宽度,客户端可以设置和读取这两个属性。网格由若干网格单元组成,每个单元有一个类型为整型的值,客户端可以设置和读取单元值。另外,一旦网格的高度和宽度以及网格的单元值三者中任意一个发生变化,须立即通知客户端作相应处理,反映出该变化。234579256789456688图12)系统由一个服务器和两个客户端组成,如图2所示。服务器客户端客户端图23)服务器端使用c+开发语言。两个客户端分别使用c+和Java两种开发语言。三、实验步骤:1.查阅资料下载mico cobra并编译安装。2.服务器端实现,编写tabl.idl通过idl poa table.idl命令生成table.cc和table.h文件。服务器端运行时,需要获取RootPOA初始引用,然后注册命名服,接着绑定此命名和服务对象,最后启动服务程序。3.实现C+客户端,初始化ORB,获取服务器命名服务对象的引用,获得业务服务对象的引用,最后执行具体业务逻辑。4.实现java客户端与C+客户端不同的是需要通过table.idle生成相应java类,其他与C+客户端类似5.测试,总结,编写相关报告四、总结及心得体会:此实验是按照网上的一个例子一步步来的,在编译mico cobra时出现UINT_MAX的定义问题但最终解决。C+客户端并没有遇到太多麻烦,但是java客户端,由于对于java并不精通,出现了各种连接错误或者函数不存在的问题,通过查阅资料添加相应的java包解决了这些问题,通过这次实验,还是了解了中间件的基本原理,熟悉了进行CORBA程序设计和开发的基本方法。5、 测试和截图(1)C+客户端运行结果如下图所示:图 1 C+客户端测试截图(2)java客户端执行结果如下图所示:图 2java客户端测试截图6、 附件table.idl文件如下:interface Tablevoid setWidth(in unsigned long width);long getWidth(); void setHeight(in unsigned long height); long getHeight(); void setValue(in unsigned long x, in unsigned long y, in unsigned long z);long getValue(in unsigned long x, in unsigned long y);;客户端代码:client.cc如下:#include table.h#ifdef HAVE_UNISTD_H#include #endifusing namespace std;int main(int argc, char *argv)int cmd;char addr256;CORBA:ORB_var orb = CORBA:ORB_init(argc, argv);CORBA:Object_var obj = orb-bind(IDL:Table:1.0, inet:127.0.0.1:8888);if(CORBA:is_nil(obj)cout oops: could not locate HelloWorld server setWidth (100);hello- setHeight (100);hello- setValue(2, 1,100);cout tables width = getWidth () endl;cout tables height = getHeight () endl;cout value of table21 = getValue (2,1) endl;return 0;server.cc如下:#include table.h#ifdef HAVE_ANSI_CPLUSPLUS_HEADERS#include #else#include #endifusing namespace std;class table_impl:virtual public POA_Tableprivate:CORBA:Long _current_width;CORBA:Long _current_height;CORBA:Long value33;CORBA:Long _current_value;public:table_impl()_current_width=0;_current_height=0;_current_value=0;void setWidth (CORBA:ULong width)_current_width = width;void setHeight (CORBA:ULong height)_current_ height = height;void setValue(CORBA:ULong x, CORBA:ULong y, CORBA:ULong z)valuexy = z;CORBA:Long getWidth()return _current_ width;CORBA:Long getHeight()return _current_ height;CORBA:Long getValue (CORBA:ULong x,CORBA:ULong y)_current_value =valuexy;return _current_value;int main(int argc, char *argv)CORBA:ORB_var orb = CORBA:ORB_init(argc, argv);CORBA:Object_var poaobj = orb-resolve_initial_references(RootPOA);PortableServer:POA_var poa = PortableServer:POA:_narrow(poaobj);PortableServer:POAManager_var mgr = poa-the_POAManager();table_impl * hello = new table_i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- ata初级入门5线性回归模型估计
- FX2N系列可编程控制器通讯技术
- DNA的分子结构和复制中
- DNA分子的结构和复制讲课用
- CB安装形式及布局要点
- F匝道桥现浇连续箱梁
- 2026苏教二上第一单元教案
- 2026年桥梁工程《设计》模拟试卷
- 幼儿健康早操活动设计
- 2026年计算机二级室外设计试卷
- 2026年通信工程师初级题库
- 计量服务行业发展现状与趋势专题研究报告
- 中国胃镜检查与治疗指南(2026版)
- 雨课堂学堂在线学堂云《医学研究生临床研究(山东)》单元测试考核答案
- 系列微机保护测控装置保护逻辑调试说明
- 标准手册桔子酒店品牌手册
- 2025年安徽马鞍山江东颐养有限责任公司招聘笔试历年参考题库附答案
- 成都子归人才发展有限公司公开招聘工作人员考试备考题库及答案解析
- 甘肃省民航机场集团有限公司招聘笔试题库2026
- GB/T 19889.1-2026声学建筑和建筑构件隔声的现场测量第1部分:房间之间空气声隔声
- 特殊食品监管培训课件
评论
0/150
提交评论