我试图了解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 both(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
是订阅者),我不了解人们如何远程连接。我如何订阅另一台机器?如何让这个简单的例子远程工作?
请询问您是否需要更多信息或详细信息。
答案 0 :(得分:1)
参与者通过UDP多播相互连接 - 请记住这在标准中有所描述,因此为了全面和完整地理解,请阅读。它是免费提供的。
规范中只定义了UDP,因此如果它们使用备用连接策略(shmem,TCP,other),那么它将取决于供应商。 RTI实现不会通过shmem与OpenSplice实现交谈(但它们可以通过UDP环回)。
存在以已知UDP端口开始的协商。
如果两个系统位于同一子网上并启用了多播,则它们将通过标准中描述的魔法进行连接。这假设它们具有兼容的域ID,主题,类型和QoS。
真的:阅读标准。