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



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

在本教程中,导师提到第 8 页中存在某种"魔术",即发布者和订阅者在自动检测参与者的情况下解耦。

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

看看这个发布者的例子:

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);
}

以及两者的完整工作示例(tspub.cpp是发布者,tssub.cpp是订阅者),我不明白人们如何远程连接。如何订阅另一台机器?我怎样才能让这个漂亮而简单的例子远程工作?

请询问您是否需要更多信息或详细信息。

参与者通过UDP多播相互连接 - 请记住,这是标准中描述的,因此为了全面和完整地理解,请阅读。 它是免费提供的。

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

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

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

真的:阅读标准。

相关内容

  • 没有找到相关文章

最新更新