Please Help DDS for WAN

2 posts / 0 new
Last post
Offline
Last seen: 7 years 1 month ago
Joined: 03/01/2017
Posts: 1
Please Help DDS for WAN

Hi everyone,

I tried to communicate Publisher and Subscriber via internet. So i want to use WAN but it doesn't work.  

I use below XML file:

<transport_builtin>
<mask>MASK_NONE</mask>
</transport_builtin>

<discovery>

<initial_peers>
<!-- -->
<!-- CHANGE THIS TO THE MACHINE YOU WANT TO CONTACT -->
<!-- NOTE: Both the IP address and port MUST MATCH -->
<!-- the public address used by the other -->
<!-- configuration -->
<!-- -->
<element>tcpv4_wan://subscriber_static_IP:8500</element>
</initial_peers>
</discovery>
<property>
<value>
<element>
<name>dds.transport.load_plugins</name>
<value>dds.transport.TCPv4.tcp1</value>
</element>
<element>
<name>dds.transport.TCPv4.tcp1.library</name>
<value>nddstransporttcp</value>
</element>
<element>
<name>dds.transport.TCPv4.tcp1.create_function</name>
<value>NDDS_Transport_TCPv4_create</value>
</element>
<element>
<name>dds.transport.TCPv4.tcp1.parent.classid</name>
<value>NDDS_TRANSPORT_CLASSID_TCPV4_WAN</value>
</element>
<!-- CHANGE THIS TO THE PUBLIC ADDRESS OF YOUR -->
<!-- LOCAL MACHINE. YOU WILL HAVE TO FORWARD A -->
<!-- PORT THROUGH YOUR FIREWALL/ROUTER TO MAP -->
<!-- FROM THIS PUBLIC PORT TO LOCAL PORT 9400
-->
<element>
<name>dds.transport.TCPv4.tcp1.public_address</name>
<value>subscriber_static_IP:8500</value>
</element>
<!-- Change this to the local port you -->
<!-- configure in your router/firewall -->
<element>
<name>dds.transport.TCPv4.tcp1.server_bind_port</name>
<value>9400</value>
</element>
</value>
</property>

 

Is anything wrong or am I miss something?

Francisco Porcel's picture
Offline
Last seen: 1 week 5 days ago
Joined: 11/07/2016
Posts: 24

Hi Aldi,

The first thing that comes to my mind is that you are setting MASK_NONE as the TransportBuiltin QoS policy kind. According to the API, you will need to explictly register transports using NDDSTransportSupport::register_transport. Could you please confirm you are calling the register_transport API? Else, you would be receiving an error message like:

DDS_DomainParticipant_enableI:There are no valid locators for use by this participant. Please validate that a valid transport is available for use by the participant and check your DDS_TransportUnicastQosPolicy and DDS_TransportMulticastQosPolicy settings. DDSDomainParticipant_impl::createI:ERROR: Failed to auto-enable entity DomainParticipantFactory_impl::create_participant():!create failure creating participant

-Fran