【问题标题】:How to connect client (on VirtualBox) and server (on localhost)? I use CORBA and C++/Java如何连接客户端(在 VirtualBox 上)和服务器(在 localhost 上)?我使用 CORBA 和 C++/Java
【发布时间】:2012-10-01 00:49:03
【问题描述】:

我有一个简单的“Hello world”C++/Java 应用程序和CORBA。服务器写在C++,客户端写在Java。我使用omniORBs omniNames,作为名称服务。

我想在我的localhost 上运行我的omniNames 和服务器 (Ubuntu) 并在我的本地主机 Ubuntu 上安装的 VirtualBox 中的 Windows XP SP3 上运行我的客户端。

(我的意思是:在我的本地主机上,我安装了 Ubuntu 操作系统,在 Ubuntu 中,我安装了带有 Windows XP SP3 'inside' 的 VirtuaBox。)

我试过这个:

  1. 我在我的 Ubuntu 本地主机上运行了 omniNames,:omniNames -start
  2. 我在同一台计算机上运行我的服务器,本地主机与 Ubuntu 操作系统: ./server -ORBInitRef NameService=corbaloc::localhost:2809/NameService
  3. 我在现场检查了我的本地主机 IP 地址:http://whatismyipaddress.com/ 和 写下来,例如:x.x.x.x
  4. 在 VirtualBox 上打开 Windows XP,运行客户端:java client -ORBInitRef NameService=corbaloc::x.x.x.x:2809/NameService

但出现错误:

C:\Temp\java>java client -ORBInitRef NameService=corbaloc:212.106.19.209:2809/Na
meService
pač 10, 2012 3:51:17 PM com.sun.corba.se.impl.naming.namingutil.CorbalocURL badA
ddress
WARNING: "IOP00110603: (BAD_PARAM) Bad host address in -ORBInitDef"
org.omg.CORBA.BAD_PARAM:   vmcid: SUN  minor code: 603  completed: No
        at com.sun.corba.se.impl.logging.NamingSystemException.insBadAddress(Unk
nown Source)
        at com.sun.corba.se.impl.logging.NamingSystemException.insBadAddress(Unk
nown Source)
        at com.sun.corba.se.impl.naming.namingutil.CorbalocURL.badAddress(Unknow
n Source)
        at com.sun.corba.se.impl.naming.namingutil.CorbalocURL.<init>(Unknown So
urce)
        at com.sun.corba.se.impl.naming.namingutil.INSURLHandler.parseURL(Unknow
n Source)
        at com.sun.corba.se.impl.resolver.INSURLOperationImpl.operate(Unknown So
urce)
        at com.sun.corba.se.impl.resolver.ORBInitRefResolverImpl.resolve(Unknown
 Source)
        at com.sun.corba.se.impl.resolver.CompositeResolverImpl.resolve(Unknown
Source)
        at com.sun.corba.se.impl.resolver.CompositeResolverImpl.resolve(Unknown
Source)
        at com.sun.corba.se.impl.orb.ORBImpl.resolve_initial_references(Unknown
Source)
        at client.main(client.java:28)

C:\Temp\java>

可以这样连接客户端和服务器吗?我该怎么做?我在 Windows XP 上只有客户端文件 - 仅此而已 - 没有名称服务,没有服务器文件,只有客户端程序。

【问题讨论】:

  • 您可以使用命令行选项 -ORBtraceLevel 40 查看使用了哪些 IP。
  • @tuergeist :我用过,谢谢,我还检查了ifconfig。如果您能提供更多帮助,请参阅对 Ian Roberts 回答的评论 :)

标签: java c++ connection virtualbox corba


【解决方案1】:

我在现场查看了我的localhosts ip地址:http://whatismyipaddress.com/并写下来,例如:x.x.x.x

这不太可能是要使用的正确 IP 地址。您如何为 VirtualBox VM 配置网络?如果您使用默认的 NAT 网络,则访客无法与主机通信,因此您需要配置“仅主机”网络,然后使用该网络主机端的 IP 地址(您在告诉客户端在哪里可以找到 ORB 时,应该能够在 Ubuntu 主机上使用 ifconfig 找到 vboxnet 接口。您可能还会发现需要在主机上添加防火墙规则以允许虚拟接口上的传入连接。

请注意,您可以为同一 VM 配置多个网络接口,因此如果 VM 需要访问 Internet 以及 ORB,那么使用两个接口设置它是完全可以的,一个 NAT 和其他主机专用。

【讨论】:

  • 非常感谢!它奏效了,但根本没有。当我将 VirtualBox 中的互联网连接切换到 bridget 并选择 eth0 并连接互联网时 - 很好。但是,当我拔掉互联网电缆时,同样的情况,它不想工作:(这是一个很大的问题,因为我需要在课堂上向我的老师和其他学生展示这个应用程序,但我们课堂上没有互联网。 .. 是否可以在不连接互联网的情况下连接客户端和服务器?
  • 我忘记了:当我尝试使用host-only 选项时,VirtualBox 说“设置错误”并且不允许我选择此选项:/
  • Host-only 绝对是您需要的选项。由于这现在是 VirtualBox 配置问题而不是编程问题,如果您询问超级用户而不是 Stack Overflow,您可能会得到更好的回应。
  • 你当然是对的 :) 但是新问题出来了 - 如果你有时间你能看到我的新问题:stackoverflow.com/questions/12860512/…?在此先感谢您,您帮了很多忙! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-23
  • 2016-04-16
  • 1970-01-01
  • 2015-09-27
  • 1970-01-01
  • 2017-06-14
  • 1970-01-01
相关资源
最近更新 更多