第一个MICO CORBA demo实录

因为忙于其他事情没有仔细去学习CORBA原理,也就大概根据网上的教程搭了一个使用MICO的demo

记录如下。

这里的话,代码我就不贴了,程序也不详细解释了,因为项目文件夹里有一个PPT详细解释了这个程序的含义,我就把关键的地方说一下,比如说网络环境的配置,程序的结构,Makefile的撰写,MICO的编译安装

点此下载项目文件夹

编译和安装MICO见这篇随笔

1、环境

  Virtual Box + Ubuntu 12.04 LTS , 用来搭建server程序

  GNU GCC , 注意Ubuntu默认是不带GNU GCC的,见这篇随笔

  Windows 7 , 用来搭建client程序

  Microsoft Visual Studio 2013

  网络环境:由于手上没有路由器,但是有一个USB无线网卡,所以用手机建立了一个WIFI Hotspot,把USB无线网卡分配给VBOX里的Ubuntu系统使用,然后Windows和Ubuntu都连接到手机建立的WIFI Hotspot中(手机没有打开数据流量),因此2个网卡可以互相PING通了。

  这样配置网络环境的原因:首先,我手头没有路由器,没有2台电脑(当然,写成手机应用也可以,不过时间紧就没这个打算),所以只能用虚拟机。其次,用虚拟机如果不进行一些配置的话,只能从虚拟机PING通主机,但是从主机无法PING通虚拟机,这是因为虚拟机网络配置一般是采用的NAT,你在Ubuntu里使用ifconfig可以查看到eth0(以太网端口0,我用的网线上网)的inet addr(也就是ipv4 addr)是类似于10.0.2.15这样的地址,而主机的inet addr(在windows下叫做IPv4 addr,用ipconfig或者arp -a可以查看)是类似于113.54.xxx.xxx(取决于你所在的地区和网络运营商),所以如果你不进行配置来解决这个问题的话,从主机是PING不通虚拟机的,虚拟机可以依靠NAT来PING通主机,但反之不行。当然,配置的方法,网上有一大堆,比如说这篇文章,虽然我很感兴趣,但是我最近时间有限也没去做那么多实验,大家可以试试。所以我就用手头能拿到的东西这样搭了一下网络环境。

  怎么测试能不能PING通:上述的网络环境搭建好之后,在Windows下,输入ipconfig查看你在WIFI Hotspot中的ip地址,比如说我得到的结果就是无线局域网适配器 无线网络连接 IPV4地址:192.168.43.2;然后到Ubuntu中,连接好手机建立的WIFI Hotspot,输入ifconfig可以看到,比如我的就是wlan0 inet addr: 192.168.43.167。因此现在就可以在Windows下PING 192.168.43.167或者在Ubuntu中PING 192.168.43.2,不出意外的话是可以PING通的。

2、程序

首先,网络端口

  在server.cpp中搜索192.168.43.167:9001,可以看出,这就是server监听的端口,因此,打开client.cpp,可以看出client也是连接的这个端口

然后,Makefile和程序结构

  Makefile里面还是写了很多注释的,应该都解释的比较清楚

  对于client这边,我只提供了Makefile.win32,也就是拿给Visual Studio NMAKE使用的,对于server那边,我既提供了Makefile.win32也提供了Makefile给GNU MAKE使用

  在Windows下,我没有选择把MICO的所有的可执行文件(idl.exe那些)配置到环境变量里面,而是直接拷贝到项目文件夹mico-bin-win32中,因此在写Makefile.win32的时候,就是用的相对路径来调用idl这些MICO的可执行文件

  在Ubuntu中,我也采取这种策略(实际上完全没有必要,因为如果你只要用默认的./configure,那么make再make install之后就会安装到/usr/local目录下,idl等程序也就在环境变量之中了,也就不用但既然都这么做了,也就懒得改了,以后做其他东西的时候注意一下就是),其中相关的代码是$(CD) src; $(IDL) Account.idl,至于为什么这两条命令要写到一行里用分号隔开,见这篇文章(并搜索cd /home/hchen; pwd)

  另外,对于server这边,在Ubuntu下编译的时候,Makefile中有2个选项-lpthread还有-lssl,也就是说MICO依赖于这两个库(别问我怎么发现的,一堆undefined reference再google一下就知道了),posix thread库在Ubuntu下是默认自带的,但是ssl库不是,需要安装,见这篇随笔

  

3、编译运行

  Ubuntu中,输入make即可编译server,可执行文件为bin/micoserver。Windows下,打开VS2013 开发人员命令提示,切换到client的目录,输入nmake /f Makefile.win32即可编译client,可执行文件为bin\micoclient.exe(server在Windows下也是可以编译的,就跟编译client的方法一样)

  

  根据前面的网络配置,可知server这边的IP地址是192.168.43.167,client这边的IP地址是192.168.43.2

  首先在Ubuntu中,运行nsd -ORBIIOPAddr inet:192.168.43.167:9001,注意如果你没有把MICO安装到/usr/local,那么你就必须找到nsd的相对路径来执行nsd程序

  然后打开另一个命令行窗口,运行编译好的bin/micoserver

  回到Windows,运行micoclient.exe即可

  运行截图如下

_______________________________________________________

  我遇到的问题就是如果把server放到虚拟机里,client放到主机里,client始终访问不到虚拟机,一会就挂了。但是反过来就可以(当然,client和server都在一台机器里就不用说了,肯定也是可以运行的)。等有机会找两台机器试试。

  

时间: 2024-10-06 13:36:42

第一个MICO CORBA demo实录的相关文章

自己的第一个NDK的Demo

DEMO下载链接: http://download.csdn.net/detail/logicsboy/7535409 首先给你们恶补下啥是NDK:(我从百度Copy的) NDK全称:Native Development Kit. 1.NDK是一系列工具的集合. * NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk.这些工具对开发者的帮助是巨大的.[1] * NDK集成了交叉编译器,并提供了相应的mk文件隔离平台.CPU.API等差

1.类的加载机制_继承类的加载(一个小的Demo)说明

今天我们先来一个小的Demo来了解类的加载顺序. 1 public class ClassLoaderTest { 2 public static void main(String[] args) { 3 System.out.println("*******************测试类的加载顺序开始*******************"); 4 new SubClass(); 5 System.out.println("*******************测试类的加载

【mvc学习】给小白们的第一个MVC学习Demo

首先用VS2012以上的VS创建一MVC网站,创建完后在解决方案视图应该有这些文件,我这里项目名称就叫taobao,你们可以自己取 加亮的地方是重点,也就是M-V-C,这时候默认已经可以运行了 大家可以右击,查看源代码,IE上好像叫查看源文件.会发现在已经引入的很多的JS,包括我们要用到的ajax请求的jquery,另外这个bootstrap是个好东西,用来布局网页,可以在PC和手机上使用一套界面,这个放后期我们再学习 <script src="/Scripts/jquery-1.10.2

使用TestStand默认ProcessModel--SequentialModel,快速搭建一个自定义过程模型Demo

TestStand 版本:2012 SP1 实现的的目标效果,如下图:使用TestStand默认ProcessModel--SequentialModel,快速搭建一个自定义过程模型Demo 步骤一: .准备工作 将TestStand ProcessModel 设置成--SequentialModel 设置Result Processing,这边启用Report记录  步骤二:  添加Model Callback 右击Sequence区域,选择Sequence File Callbacks,在出

他的第一个NDK的Demo

DEMO下载链接: http://download.csdn.net/detail/logicsboy/7535409 首先给你们恶补下啥是NDK:(我从百度Copy的) NDK全称:Native Development Kit. 1.NDK是一系列工具的集合. * NDK提供了一系列的工具,帮助开发人员高速开发C(或C++)的动态库,并能自己主动将so和java应用一起打包成apk. 这些工具对开发人员的帮助是巨大的.[1] * NDK集成了交叉编译器,并提供了对应的mk文件隔离平台.CPU.

第一个spring小demo

工作中用spring有一年多了,基本弄懂了bean配置文件的配置,但是却没有对spring配置文件,加载有更多的认识,今天动手写了第一个spring的小demo. 这个demo之前是想做web版的,但是web的启动比较麻烦,不如直接使用main方法执行直观,所以,就使用main方法来读取配置文件,启动spring. 看一下项目的结构  其中src部分是项目源码 和 配置文件applicationContext.xml WebContent 目录下面的WEB-INF/lib 目录下面存放的是spr

先从一个 libev 的 demo 入手

最近想研究下 libev 这个网络库,所以先从官方文档一个最简单的 demo 开始,代码如下: //io.c // a single header file is required #include <ev.h> #include <stdio.h> // for puts // every watcher type has its own typedef'd struct // with the name ev_TYPE ev_io stdin_watcher; ev_timer

【mvc学习】给小白们的第一个MVC学习Demo之Login篇

上次的Demo,只做了一个查询列表的功能,而且用的是ajax,今天我们来看下原味的mvc的过程,以登录为例,我们依旧是用sqlite数据库 按上次的步骤,我们已经有了一个可以跑的项目,接下来就是添加Login的Action和View以及Modals STEP 1 : 我们需要数据库支持,添加用户表users,字段如下 添加用户数据:insert into users(account,password,name) values('123','123','白茶程序员') STEP 2 :添加Moda

【转】WCF入门教程六[一个简单的Demo]

一.前言 前面的几个章节介绍了很多理论基础,如:什么是WCF.WCF中的A.B.C.WCF的传输模式.本文从零开始和大家一起写一个小的WCF应用程序Demo. 大多框架的学习都是从增.删.改.查开始来学习的,我们学习WCF也是一样的.从简单来看(不包括安全.优化等相关问题),WCF的增删改查和WebForm相差无几.WCF只是把具体"实现"写在"Service端",而"调用"放在了"Client端".觉得有帮助别忘了点个赞哈,