连接到 DDS 中的主机:是否有网络?

Connect to host in DDS: Is there networking at all?

我正在尝试了解 DDS 并学习它。我一直在这里和那里阅读有关 OpenSplice DDS 的教程,其中有些东西让我感到困惑。

在本教程中,导师提到第 8 页中有某种 "Magic" 发布者和订阅者在自动检测参与者的地方解耦。

但是如果我有另一台计算机的参与者怎么办?或者也许在另一个国家?

看看这个发布者的例子:

dds::Topic<TempSensorType> tsTopic("TempSensorTopic");
dds::DataWriter<TempSensorType> dw(tsTopic);
TempSensorTypets = {1, 26.0F, 70.0F, CELSIUS};
dw.write(ts);

以及这个订阅者示例:

dds::Topic<TempSensorType> tsTopic("TempSensorTopic");
dds::DataReader<TempSensorType> dr(tsTopic);
dds::SampleInfoSeq info;TempSensorSeq data;
while (true) 
{   dr.read(data, info);
    for (inti =0; i < data.length(); ++i)
        std::cout << data[i] << std::endl;sleep(1);
}

this full working example of bothtspub.cpp是发布者,tssub.cpp是订阅者),我不明白人们如何远程连接。我如何订阅另一台机器?我怎样才能让这个漂亮而简单的示例远程工作?

如果您需要更多信息或详细信息,请询问。

参与者通过 UDP 多播相互连接——请记住,这是在标准中描述的,所以要获得完整和完整的理解,请阅读它。它是免费提供的。

规范中仅定义了 UDP,因此如果他们使用替代连接策略(shmem、TCP 或其他),则它将取决于供应商。 RTI 实现不会通过 shmem 与 OpenSplice 实现对话(但它们可以通过 UDP 环回)。

有一个从已知 UDP 端口开始的协商。

如果两个系统在同一个子网上,并且启用了多播,它们将通过标准中描述的魔术进行连接。这假定它们具有兼容的域 ID、主题、类型和 QoS。

真的:阅读标准。