Как связать клиент (на VirtualBox) и сервер (на localhost)? Я использую CORBA и C ++ / Java

У меня есть простой «Привет мир» C++/Java приложение с CORBA, Сервер написан на C++клиент в Java, Я использую omniORBs omniNames, как служба имен.

Я хотел бы запустить мой omniNames и сервер на моем localhost
(Ubuntu) и запустить мой клиент на Windows XP SP3 в VirtualBox, установленном на моем локальном хосте Ubuntu.

(Я имею в виду: на своем локальном хосте я установил Ubuntu OS, а в Ubuntu я установил VirtuaBox с Windows XP SP3 «внутри».)

Я попробовал это:

  1. Я запустил omniNames на своем локальном хосте Ubuntu: omniNames -start
  2. Я запустил свой сервер, также на том же компьютере, localhost с ОС Ubuntu:
    ./server -ORBInitRef
    NameService=corbaloc::localhost:2809/NameService
  3. Я проверил свой локальный IP-адрес на сайте: http://whatismyipaddress.com/ а также
    записал это, например: x.x.x.x
  4. Включил Windows XP на VirtualBox, запустил клиент: 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 — больше ничего — нет службы имен, нет файлов сервера, только программы клиентов.

4

Решение

Я проверил свой локальный IP-адрес на сайте: http://whatismyipaddress.com/ и записал это, например: x.x.x.x

Очень маловероятно, что это правильный IP-адрес для использования. Как вы настроили сеть для виртуальной машины VirtualBox? Если вы используете сеть NAT по умолчанию, то гость не может общаться с хостом, поэтому вместо этого вам нужно настроить сеть «только для хоста», а затем использовать IP-адрес на стороне хоста этой сети (которую вы должен быть в состоянии найти с помощью ifconfig на хосте Ubuntu, ищите vboxnet интерфейс) при сообщении клиенту, где найти ORB. Вы также можете добавить правила брандмауэра на хост-компьютере, чтобы разрешить входящие соединения через виртуальный интерфейс.

Обратите внимание, что для одной и той же виртуальной машины может быть настроено более одного сетевого интерфейса, поэтому, если виртуальной машине необходим доступ к Интернету, а также к шару ORB, тогда вполне нормально настроить его с двумя интерфейсами: одним NAT и другим хостом. только.

7

Другие решения

Других решений пока нет …