Search code examples
networkingdata-distribution-servicewanopendds

OpenDDS: how to communicate two hosts through public network (WAN)


Rcently, I succeeded in communicating two hosts in same subnet by OpenDDS. However, I want to communicate other two hosts through public network or WAN. It doesn't work. How can I solve this problem??

Here is my communication enviroment:

I have two hosts. HostA is AWS(Amazon Web Service) and Host B is my Destktop. Also, two hosts has public IP address and disable firewall. I already checked whether the specific port number was available by telnet command. like this:

$ telnet <HostA IP's> 12345

and it is fine connetion.

I used OpenDDS-3.11 and $OpenDDS_HOME/tests/DCPS/Messenger 's example.

In HostA, enable

$ DCPSInfoRepo -ORBListenEndpoints iiop://:12345

Subscriber operate like this:

$ ./subscriber -DCPSConfigFile sub_multicast.ini

In HostB,

Directory is same subsceriber and then publisher operate like this:

$ ./publisher -DCPSInfoRepo <HostA's IP>:12345 -DCPSConfigFile pub_multicast.ini

Publisher's return error message here:

$ ./publisher -DCPSInfoRepo <HostA' IP>:12345 -DCPSConfigFile pub_multicast.ini
Starting publisher
(3074|140050504111936) NOTICE: using DCPSInfoRepo value from command option (overrides value if it's in config file).
Starting publisher with 1 args
(3074|140050504111936) EXCEPTION, ERROR: InfoRepoDiscovery::get_dcps_info: failed to resolve ior -
system exception, ID 'IDL:omg.org/CORBA/TRANSIENT:1.0'
OMG minor code (2), described as 'No usable profile in IOR.', completed = NO

(3074|140050504111936) ERROR: DomainParticipantFactoryImpl::create_participant, add_domain_participant returned invalid id.
publisher.cpp:66: main() ERROR: create_participant failed!
ERROR: InfoRepoDiscovery::~InfoRepoDiscovery - Exception caught during ORB shutdown: system exception, ID 'IDL:omg.org/CORBA/BAD_INV_ORDER:1.0'
OMG minor code (4), described as 'ORB has shutdown.', completed = NO

What did I do wrong??


Solution

  • I finally solve my problem Just change Discovery server host and use rtps_uni.ini file. like this:

    DCPSInfoRepo -ORBListenEndpoints iiop://:12345
    

    subscriber side:

    ./subscriber -DCPSDebugLevel=5 -DCPSInfoRepo HostA:12345 -DCPSConfigFile rtps_uni.ini
    

    publisher side:

     ./publisher -DCPSInfoRepo HostA:12345 -DCPSConfigFile rtps_uni.ini