fastdds实战 ------ 订阅者使用组播

配置示例及说明:

默认情况下,FastDDS会对本机的topic使用共享内存,并默认开启一个单播udp端口接收数据.

因此我们使用"useBuiltinTransports=false"关闭默认的共享内存通道

使用"default_external_unicast_locators"置空关闭默认的单播udp端口

并配置一个组播地址用于接收数据,并通过代码在创建data_reader时使用它.


<dds xmlns="http://www.eprosima.com/XMLSchemas/fastRTPS_Profiles">
<profiles xmlns="http://www.eprosima.com/XMLSchemas/fastRTPS_Profiles">
     <data_reader profile_name="data_reader_multicast">
            <multicastLocatorList>
                
                <locator>
                    <udpv4>
                        <address>172.17.0.4address>
                        <port>50004port>
                    udpv4>
                locator>
            multicastLocatorList>
      data_reader>

    <participant profile_name="udp_transport_profile" is_default_profile="true">
        <rtps>
            
            <useBuiltinTransports>falseuseBuiltinTransports>
             
            <default_external_unicast_locators>default_external_unicast_locators>
            <builtin>
              <discovery_config>
                <ignoreParticipantFlags>NO_FILTERignoreParticipantFlags>
              discovery_config>
            builtin>
        rtps>
    participant>

profiles>
dds>

代码示例:

  subscriber_ = participant_->create_subscriber(sqos, nullptr);

  if (subscriber_ == nullptr) {
    return false;
  }
 
 reader_ = subscriber_->create_datareader_with_profile(
      topic_, "data_reader_multicast", &listener_);

你可能感兴趣的:(DDS中间件,Linux/Unix,性能分析优化,DDS,FastDDS,组播,自动驾驶中间件)