15.2.2. Disabling Multicast Discovery
如果所有的对等节点在初始对等列表中已经知道并配置好,可以完全禁用多播元流量,因为所有的DomainParticipants可以通过单播进行通信。
禁用多播发现的完整步骤可以在《禁用所有多播流量》中找到。为了方便,这里展示了如何通过配置一个元流单播定位器来禁用所有多播流量。在设置metatrafficUnicastLocatorList
中的端口时,需要考虑避免使用不可用的端口或不匹配初始对等参与者列表中地址-端口的分配。
C++ 示例代码
DomainParticipantQos qos;
// 在接口192.168.10.13上配置一个元流单播定位器。
// 参与者ID为`1`,域为`0`。
Locator_t meta_unicast_locator;
IPLocator::setIPv4(meta_unicast_locator, "192.168.10.13");
meta_unicast_locator.port = 7412;
qos.wire_protocol().builtin.metatrafficUnicastLocatorList.push_back(meta_unicast_locator);
XML 配置示例
<?xml version="1.0" encoding="UTF-8" ?>
<profiles xmlns="http://www.eprosima.com">
<participant profile_name="initial_peers_multicast_avoidance" is_default_profile="true">
<rtps>
<builtin>
<!-- 选择特定的单播地址 -->
<metatrafficUnicastLocatorList>
<locator>
<udpv4>
<address>192.168.10.13</address>
<port>7412</port>
</udpv4>
</locator>
</metatrafficUnicastLocatorList>
</builtin>
</rtps>
</participant>
</profiles>
总结
以上代码和XML配置展示了如何通过设置单播定位器来禁用多播发现。这种方法适用于已知并预先配置好的所有对等节点,提高网络效率,减少不必要的多播流量。
内容由零声教学AI助手提供,问题来源于学员提问