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

时间:2017-01-31 14:31:43

标签: c++ publish-subscribe remote-server data-distribution-service opensplice

我试图了解DDS并学习它。我一直在这里和那里阅读有关OpenSplice DDS的教程,有些令我困惑的事情。

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

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

看看这个发布者的例子:

UPDATE tblName SET colname=replace(colname, '''', '') WHERE colname LIKE '%''%';

和订阅者的这个例子:

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

this full working example of bothdds::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是订阅者),我不了解人们如何远程连接。我如何订阅另一台机器?如何让这个简单的例子远程工作?

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

1 个答案:

答案 0 :(得分:1)

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

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

存在以已知UDP端口开始的协商。

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

真的:阅读标准。