我有兩個程序,一個使用OpenSplice 6.7.1和另一個使用OpenDDS 3.10。OpenDDS和OpenSplice的互用性
它們都使用RTPS作爲協議中,相同的域ID和目的地端口(I驗證使用的Wireshark)。
問題是他們沒有溝通。
我不知道我是否在做任何錯誤的配置...我使用OpenDDS的基本配置RTPS和OpenSplice我更改域ID後使用提供的ospl.xml。
這是我的配置文件。 對於OpenDDS:
[common]
DCPSGlobalTransportConfig=$file
DCPSDefaultDiscovery=DEFAULT_RTPS
[transport/the_rtps_transport]
transport_type=rtps_udp
對於OpenSplice:
<OpenSplice>
<Domain>
<Name>ospl_sp_ddsi</Name>
<Id>223</Id>
<SingleProcess>true</SingleProcess>
<Description>Stand-alone 'single-process' deployment and standard DDSI networking.</Description>
<Service name="ddsi2">
<Command>ddsi2</Command>
</Service>
<Service name="durability">
<Command>durability</Command>
</Service>
<Service name="cmsoap">
<Command>cmsoap</Command>
</Service>
</Domain>
<DDSI2Service name="ddsi2">
<General>
<NetworkInterfaceAddress>AUTO</NetworkInterfaceAddress>
<AllowMulticast>true</AllowMulticast>
<EnableMulticastLoopback>true</EnableMulticastLoopback>
<CoexistWithNativeNetworking>false</CoexistWithNativeNetworking>
</General>
<Compatibility>
<!-- see the release notes and/or the OpenSplice configurator on DDSI interoperability -->
<StandardsConformance>lax</StandardsConformance>
<!-- the following one is necessary only for TwinOaks CoreDX DDS compatibility -->
<!-- <ExplicitlyPublishQosSetToDefault>true</ExplicitlyPublishQosSetToDefault> -->
</Compatibility>
</DDSI2Service>
<DurabilityService name="durability">
<Network>
<Alignment>
<TimeAlignment>false</TimeAlignment>
<RequestCombinePeriod>
<Initial>2.5</Initial>
<Operational>0.1</Operational>
</RequestCombinePeriod>
</Alignment>
<WaitForAttachment maxWaitCount="100">
<ServiceName>ddsi2</ServiceName>
</WaitForAttachment>
</Network>
<NameSpaces>
<NameSpace name="defaultNamespace">
<Partition>*</Partition>
</NameSpace>
<Policy alignee="Initial" aligner="true" durability="Durable" nameSpace="defaultNamespace"/>
</NameSpaces>
</DurabilityService>
<TunerService name="cmsoap">
<Server>
<PortNr>Auto</PortNr>
</Server>
</TunerService>
</OpenSplice>
我在做什麼錯?
我更新我的崗位上有關這個問題的論壇。 我修改了我的IDL,使它們無模塊化,但仍然沒有互操作性。我修改了OpenDDS提供的iShapes的IDL並使其無模塊化,並對源文件進行了必要的修改,但兩個iShapes之間仍然沒有互操作性。我按照你的建議添加了IP地址: 10.0.2.15 NetworkInterfaceAddress> –
我使用wireshark來跟蹤數據包,並且我注意到一些有趣的事情:OpenSplice使用正確的接口進行通信,它週期性地發送3個數據包長度相同,但是當我發佈我的數據時,發佈者會收到,但我在wireshark上看不到任何內容!沒有發送數據的痕跡! 當我在openSplice中使用openDDS時,當參與者連接時,openDDS開始發送HEARTBEAT數據包,這是檢測到另一個參與者時的正常行爲!但是,發送的數據和斷開連接仍未檢測到! –