ZBLOG

eprosima::fastdds::dds::DomainParticipantQos qos; // Disable the built-in Transport Layer. qos.transport().use_builtin_transports = false; // Create a descriptor for the new transport. // Do not configure any listener port auto tcp_transport = s...

这段代码是使用 eProsima Fast DDS 库来配置和创建一个 Domain Participant,主要用于设置 TCP 传输层,并指定初始的对等体(peers)。以下是每一部分代码的详细解释:

1. 创建 DomainParticipantQos 对象

eprosima::fastdds::dds::DomainParticipantQos qos;
  • DomainParticipantQos:这是一个质量服务(QoS)设置结构,允许用户自定义参与者的行为和特性。

2. 禁用内置传输层

qos.transport().use_builtin_transports = false;
  • use_builtin_transports 设置为 false,表示不使用 Fast DDS 内置的传输机制,而是使用用户自定义的传输方式。

3. 创建 TCPv4 传输描述符

auto tcp_transport = std::make_shared<eprosima::fastdds::rtps::TCPv4TransportDescriptor>();
tcp_transport->set_WAN_address("80.80.99.47");
  • 创建一个共享指针指向 TCPv4TransportDescriptor 的实例,这是用于 TCP IPv4 网络通信的描述符。
  • 设置 WAN 地址为 "80.80.99.47"。在有多个客户端在不同本地网络中时,推荐使用客户端的 WAN 地址。

4. 配置接收线程设置(可选)

tcp_transport->default_reception_threads(eprosima::fastdds::rtps::ThreadSettings{-1, 0, 0, -1});
tcp_transport->set_thread_config_for_port(12345, eprosima::fastdds::rtps::ThreadSettings{-1, 0, 0, -1});
tcp_transport->keep_alive_thread = eprosima::fastdds::rtps::ThreadSettings{-1, 0, 0, -1};
tcp_transport->accept_thread = eprosima::fastdds::rtps::ThreadSettings{-1, 0, 0, -1};
  • 设置默认接收线程数以及针对特定端口(这里是 12345)的线程配置。这些设置允许更细粒度地控制多线程性能。

5. 设置初始对等体(Initial Peers)

eprosima::fastdds::rtps::Locator_t initial_peer_locator;
initial_peer_locator.kind = LOCATOR_KIND_TCPv4;
  • 创建一个 Locator_t 实例,用于描述初始对等体的信息,并将其类型设置为 TCPv4。

6. 指定 IP 地址与端口信息

eprosima::fastdds::rtps::IPLocator::setIPv4(initial_peer_locator, "192.168.1.10");
eprosima::fastdds::rtps::IPLocator::setWan(initial_peer_locator, "80.80.99.45");
eprosima::fastdds::rtps::IPLocator::setPhysicalPort(initial_peer_locator, 5100);
eprosima::fastdds::rtps::IPLocator::setLogicalPort(initial_peer_locator, 5100);
  • 使用 LAN 和 WAN 地址初始化对等体定位器。其中:
    • setIPv4:设置本地地址为 "192.168.1.10"
    • setWan:设置 WAN 地址为 "80.80.99.45"
    • setPhysicalPort:将物理端口设置为 5100
    • setLogicalPort:也将逻辑端口设为 5100,需要确保服务器和客户端一致。

7. 添加初始对等体到 QoS 配置中

qos.wire_protocol().builtin.initialPeersList.push_back(initial_peer_locator);
  • 将之前配置好的定位器添加到 QoS 中,以便在参与者启动时能够找到并连接到其他参与者。

总结

这段代码实现了通过配置 TCPv4 参数来建立 Fast DDS 的通信环境。特别是在分布式系统中,这种灵活性使得可以在不同网络条件下有效地进行数据传递和节点发现。


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

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

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

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

联系我们

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

微信号:3007537140

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

关注我们
x

注册

已经有帐号?