问题标签 [data-distribution-service]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3980 浏览

data-distribution-service - 如何在 idl 中为 DDS 建模

我是 DDS 和 IDL 的新手,我希望有人可以就如何在 IDL 中建模以下内容提供一些建议。

这是基于 OO 角度的模型,它只是作为一个简单的示例: 在此处输入图像描述

这是我在 IDL 中的初始数据模型 - 是否正确完成?如何在 IDL 中“建模”继承和依赖关系?网上的很多例子都很简单——我发现的那些太简单了......

这只是一个虚构的继承示例,并不是最好的;o)

这是正确的还是有更好的建模方法 - 任何人都可以提供一个好的“HOWTO”链接,用于使用 IDL for DDS?注意:我正在使用 RTI Connext DDS

0 投票
1 回答
221 浏览

c++ - DDS DomainParticipantFactory 错误 CORBA

我正在尝试创建一个程序来测试 Opensplice DDS。但是,我面临一些问题,我已经被困了很长时间。

当我尝试创建一个时,DomainParticipantFactory我收到一个错误,上面写着CORBA:NO_IMPLEMENT. 如果我不创建该程序,该程序就可以工作,DomainParticipant所以我认为问题出在那儿。

有人会遇到这样的问题吗?

0 投票
0 回答
503 浏览

hadoop - Hadoop vs DDS vs ACE

我正在写一份关于 Java 分布式系统库的报告。但我看不出它们之间的区别。ACE、Hadoop、DDS 有什么区别?三者能不能用来开发像简单聊天这样的分布式应用?谢谢!

0 投票
1 回答
1250 浏览

data-distribution-service - RTI路由服务设置

我在让 RTI 路由服务与我的应用程序一起工作时遇到问题。

我创建了一个简单的 DDS 发布者应用程序和一个简单的 DDS 订阅者应用程序。应用程序通过 LAN 在 2 台不同的计算机上运行时进行通信,但我无法使用 RTI 路由服务让它们在 WAN 上工作。

我按照“RTI Routing Service - Getting Started Guide”中的“Example 8 - Using the TCP Transport with Routing Service”。我可以让 RTI Shapes Demo 在 RTI Routing Service 上运行。注意。我的应用程序使用与 RTI Shapes Demo 相同的域 ID

我的发布者在 PC1 上,订阅者在 PC2 上。我可以看到(使用 rtiddsspy)PC2 从 RTI 路由服务接收数据,但订阅者应用程序没有在 PC2 上收到通知。

在创建用于 RTI 路由服务的 DDS 应用程序时,有什么我必须特别注意的吗?

问候约翰

0 投票
1 回答
509 浏览

data-distribution-service - RTI DDS Src HostId 到 IP 地址

我正在使用RTI DDS Spy来调试 DDS 应用程序。我注意到间谍工具中的奇怪消息,我认为这些消息不是来自我的应用程序。

问题是如何获取Src HostId并找出发件人的 IP 地址?(Wireshark 不是一个选项。)

0 投票
3 回答
5926 浏览

data-distribution-service - RTI DDS 订阅者未从发布者获取数据

小故事:我的 DDS 订阅者无法看到来自我的 DDS 发布者的数据。我错过了什么?

很长的故事:

我有一个 QNX VM(托管在网络上,而不是我的机器上),它通过 RTI DDS 发布一些数据。数据从未出现在我的 Windows 7 订阅者应用程序中。

有趣的是,我可以将相同的代码放在 VM B 上,然后订阅者获取数据。认为这一定是 Windows 7 防火墙问题,我将 VM A 的 IP 地址与 VM B 交换,但这并没有帮助。

使用 Wireshark,我可以看到来自 VM A 的一些心跳流量,但没有数据。从 VM B,我看到了心跳流量和数据。下面是经过消毒的 Wireshark 片段。 Wireshark 输出

NDDS_DISCOVERY_PEERS设置为包括多播和每个对话另一方的显式 IP 地址。QOS 配置文件相同,RTI Analyzer 指示匹配分析成功(全为绿色)。

虚拟机甲: NDDS_DISCOVERY_PEERS=udpv4://239.255.0.1,udpv4://127.0.0.1,udpv4://BLAH.203

虚拟机乙: NDDS_DISCOVERY_PEERS=udpv4://239.255.0.1,udpv4://127.0.0.1,udpv4://BLAH.203

Windows 7 盒子: NDDS_DISCOVERY_PEERS=udpv4://239.255.0.1,udpv4://127.0.0.1,udpv4://BLAH.113,udpv4://BLAH.114

当我将它们包含NDDS_DISCOVERY_PEERS在行中时,网络上的其他人可以在他们的 Windows 7 机器上通过 DDS SPY 看到来自 VM A 的 DDS 流量。我的 Windows 7 盒子不能。

Windows 7 事件日志似乎没有显示任何防火墙或 WFP 停止数据包。

在我的 Windows 7 机器上运行的 RTI DDS Spy 显示 VM A (0A061071) 写入器在网络上可见,但没有接收到数据。它还显示我的 Windows 7 机器上的订阅者中的阅读器是可见的,尽管它显示在一个奇怪的 IP 地址上。

额外的问题(只是出于好奇,不是主要问题):为什么我的本地机器上的流量显示在 DDS SPY 中192.168.11.1而不是我机器的 IP 甚至127.0.0.1

RTI DDS 间谍输出

主要问题:我错过了什么?

更新: route print在我的 Windows 7 盒子上似乎显示我已经加入了一个带有 VM A 的多播组。 netsh interface ip show joins似乎同意。

调查更新:

  1. 我重新启动了VM,但没有效果。

  2. 我重新启动了 Windows 框,但没有效果。

  3. 我从NDDS_DISCOVERY_PEERS两边的环境变量中删除了多播,但没有效果。

  4. Windows 7 机器具有三个网络接口(加上环回):1 个 LAN 连接和 2 个(不相关的)VM 适配器。我们正在使用 LAN 连接。QNX VM 有一个网络接口(加上环回)。请注意,工作 VM 和损坏的 VM 使用不同的以太网驱动程序,因为它们与 QNX 6.4.1 的风格略有不同。坏的有wm0接口,工作的有en0接口。我不认为这是问题所在,但这是不同的。

  5. 我在“损坏的”QNX VM 上运行 DDS SPY,而它正在播放,我得到了 DDS 数据。我没有一个很好的方法来嗅探虚拟机所在的位置和我的 Windows 7 机器之间的网络,看看它是否会离开接口,但是查看 QNX 虚拟机上以太网接口的传输数据包计数表明它肯定在传输某些东西,而 Wireshark 在 Windows 7 机器上捕获的内容表明至少有一些流量正在通过。

  6. LAN 上的其他人可以看到来自“损坏的”虚拟机的 DDS 流量,这让我相信这是 Windows 设置问题,而不是损坏的虚拟机——我只是看不出它可能是什么。我重新检查了防火墙,但无济于事。我原以为如果是防火墙问题,当我在 VM A 和 VM B 之间交换 IP 地址时,问题就会消失。无论如何,Windows 7 防火墙当前已关闭,但无济于事。

  7. 下面是 Wireshark 输出的几个屏幕。我在第三和第四之间跳过了一堆,因为在第四之后,流量往往看起来像第四的底部,直到结束。

图 1 图 2 图 3 (这里跳过了一堆) 图 4 (几乎像上面的最后 11 行一样继续)

我还应该尝试什么?

更新: 要在下面回答 Rose 的问题,rtiddsping -publisher请在坏的 VM 上使用并rtiddsping -subscriber正常工作。

我想知道这个问题是否是由奇怪的 IP 地址引起的。它碰巧发布并以某种方式锁定到的 IP 地址是本地 VM 以太网适配器(与 VM A 分开)。请参阅下面的屏幕截图。

Win7 ipconfig

我希望它附加的地址是 10.6.6.203。有什么办法可以指定吗?

0 投票
0 回答
397 浏览

c++ - 这个 C++ 代码结构是什么意思?

我找到了以下代码(自动生成,但无法编译),现在我想知道它的含义:

正如一些人指出的那样,## 是用于宏的,实际上代码在宏中。我没有意识到这一点,并试图将其直接放入代码中以获得更清晰的错误消息。原来的宏是:

原来的编译器错误是:语法错误:缺少';' 在标识符“类型”之前

我手动插入宏并应用##:

但它直接在 typedef 的行中说:缺少';' 在标识符“类型”之前(编译器是安装了 SP1 的 VS2010)

谁能告诉我?(代码由 OpenSplice 的 idlpp.exe 生成)

原因现在很清楚(我忘记了 idl 中的 #pragma keylist 条目) - 没有生成 UnboundedStringWithKeyTypeSupport。但这是一个不同的问题。

问候托拜厄斯

0 投票
1 回答
725 浏览

data-distribution-service - Opensplice DDS 持久数据可以有多大?

我想知道我是否可以将大量数据放入我的软件中,或者我是否必须使用外部解决方案。

使用 OpenSplice DDS 或 RTI 的 DDS 的持久性可以放置多少数据?

0 投票
1 回答
1255 浏览

qt - Qt与RTI DDS交互---需要一些指导

我正在制作一个 GUI,其中我在 QStackedWIdget 上有多个表单。现在我希望这些表格中的数据在可用时更新。数据将通过 RTI DDS 接收。有人可以建议我一些从非 GUI 线程更新 GUI 数据的示例或链接。

谢谢你。

0 投票
1 回答
1190 浏览

c++ - How to pass a C++ Map into a RTI DDS connext Publisher and receive at RTI Subscriber

I am new to RTI DDS connext. I tried running some C++ examples(Hello_dynamic,Hello_simple) of rti and they where working fine.Then i thought of passing a C++ map as Topic type from publisher to Subscriber.But i guess their is no documentation and example codes are available for doing this. Please help me here ..??