ZBLOG

6.8. Listening Locators Listening Locators are used to receive incoming traffic on the DomainParticipant. These Locators can be classified according to the communication type and to the nature of the data. According to the communication type we ...

这段文本讨论了Listening Locators的概念,它们在DomainParticipant中用于接收传入的网络流量。下面是对内容的详细解释:

1. Listening Locators

Listening Locators根据通信类型和数据性质进行分类:

  • 通信类型

    • Multicast locators:用于监听多播通信。
    • Unicast locators:用于监听单播通信。
  • 数据性质

    • Metatraffic locators:接收元流量信息,通常由内置端点使用以执行发现(Discovery)。
    • User locators:由用户创建的端点使用,以接收用户主题的数据变化。

应用程序可以提供自己的Listening Locators,或者使用eProsima Fast DDS提供的默认Listening Locators。

2. 添加Listening Locators

用户可以通过DomainParticipantQos向DomainParticipant添加自定义Listening Locators。Locator的位置决定了它被视为多播、单播、用户或元流量Locator。

注意事项:

  • UDP和TCP单播Locators支持使用空地址。在这种情况下,Fast DDS会自动获取并使用本地网络地址。
  • UDP和TCP Locators支持使用零端口。这时,Fast DDS会自动计算并使用该类型流量的知名端口。
  • TCP不支持多播场景,因此需要谨慎规划网络架构。

3. 示例代码

以下是不同类型Locator的示例代码:

3.1 Metatraffic Multicast Locators

DomainParticipantQos qos;

// 创建一个用于UDPv4端口22222监听239.255.0.1多播地址的Socket Locator
eprosima::fastdds::rtps::Locator_t locator;
IPLocator::setIPv4(locator, 239, 255, 0, 1);
locator.port = 22222;

// 将此Locator添加到DomainParticipantQos中
qos.wire_protocol().builtin.metatrafficMulticastLocatorList.push_back(locator);

3.2 Metatraffic Unicast Locators

DomainParticipantQos qos;

// 创建一个用于UDPv4端口22223监听192.168.0.1单播地址的Socket Locator
eprosima::fastdds::rtps::Locator_t locator;
IPLocator::setIPv4(locator, 192, 168, 0, 1);
locator.port = 22223;

// 将此Locator添加到DomainParticipantQos中
qos.wire_protocol().builtin.metatrafficUnicastLocatorList.push_back(locator);

3.3 User-Traffic Multicast Locators

DomainParticipantQos qos;

// 创建一个用于UDPv4端口22224监听239.255.0.1多播地址的Socket Locator
eprosima::fastdds::rtps::Locator_t locator;
IPLocator::setIPv4(locator, 239, 255, 0, 1);
locator.port = 22224;

// 将此Locator添加到DomainParticipantQos中
qos.wire_protocol().default_multicast_locator_list.push_back(locator);

3.4 User-Traffic Unicast Locators

DomainParticipantQos qos;

// 创建一个用于UDPv4端口22225监听192.168.0.1单播地址的Socket Locator
eprosima::fastdds::rtps::Locator_t locator;
IPLocator::setIPv4(locator, 192, 168, 0, 1);
locator.port = 22225;

// 将此Locator添加到DomainParticipantQos中
qos.wire_protocol().default_unicast_locator_list.push_back(locator);

这些代码展示了如何设置不同类型的Locators并将其添加到DomainParticipantQos配置中,从而使得DDS系统能够处理各种类型的数据传输需求。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://sdn.0voice.com/?id=7246

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?