news 2026/4/27 6:48:45

fastdds源码分析之PDP协议

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
fastdds源码分析之PDP协议

文章目录

      • 1. 概述
      • 2. 发现流程
      • 3. 内置端点
      • 4. ParticipantProxyData 内容
      • 5. 两种 PDP 实现
      • 6. 与 EDP 的关系
      • 7. 总结

1. 概述

PDP是 RTPS 协议中用于发现参与者 (Participant)的协议,是 DDS 发现机制的第一步。


2. 发现流程

┌─────────────────────────────────────────────────────────────────────┐ │ PDP 发现流程 │ ├─────────────────────────────────────────────────────────────────────┤ │ │ │ Participant A Participant B │ │ │ │ │ │ │ 1. 定时广播 PARTICIPANT_DATA │ │ │─────────────────────────────────▶│ 收到对方的参与者信息 │ │ │ │ │ │ │◀─────────────────────────────────│ 广播 PARTICIPANT_DATA │ │ │ 收到对方的参与者信息 │ │ │ │ │ │ │ │ 2. 创建 ParticipantProxy │ │ │ │ │ 2. 创建 ParticipantProxy │ │ │ │ │ │ │ 3. 启动 EDP │ │ │ │◀─────────────────────────────────│ 3. 启动 EDP │ │ │ │ │ └─────────────────────────────────────────────────────────────────────┘

3. 内置端点

PDP 使用SPDP (Simple Participant Discovery Protocol)的内置端点:

内置端点说明
SPDP Writer广播本地 Participant 信息
SPDP Reader接收远程 Participant 信息

4. ParticipantProxyData 内容

structParticipantProxyData{// 协议版本ProtocolVersion_t protocolVersion;// 厂商 IDVendorId_t vendorId;// 参与者 GUID 前缀GuidPrefix_t guidPrefix;// 参与者名称string_255 participant_name;// 元流量地址 (发现用)LocatorList_t metatraffic_locators;// 默认单播地址LocatorList_t default_unicast_locators;// 存活时间Duration_t leaseDuration;// 安全相关// ...};

5. 两种 PDP 实现

实现说明
PDPSimple简单实现,广播到多播地址
PDPServer服务器模式,客户端连接服务器获取参与者列表

6. 与 EDP 的关系

┌────────────────────────────────────────────────────────────────────┐ │ PDP 与 EDP 的关系 │ ├────────────────────────────────────────────────────────────────────┤ │ │ │ PDP: 发现 Participant │ │ ──────────────────────────────────────────────────────────────── │ │ 1. SPDP Writer 广播 PARTICIPANT_DATA │ │ 2. 收到远程 Participant,创建 ParticipantProxy │ │ 3. 触发 onParticipantMatched 回调 │ │ │ │ EDP: 发现 Endpoint │ │ ──────────────────────────────────────────────────────────────── │ │ 1. SEDP Writer 广播 PUBLICATION_DATA / SUBSCRIPTION_DATA │ │ 2. 收到远程 Endpoint,进行匹配 │ │ 3. 触发 on_writer_matched / on_reader_matched 回调 │ │ │ │ 顺序: PDP → EDP (先有 Participant 才能有 Endpoint) │ │ │ └────────────────────────────────────────────────────────────────────┘

7. 总结

┌────────────────────────────────────────────────────────────────────┐ │ PDP 总结 │ ├────────────────────────────────────────────────────────────────────┤ │ │ │ 职责: 发现同一 Domain 内的所有 Participant │ │ │ │ 实现: SPDP (Simple Participant Discovery Protocol) │ │ │ │ 内置端点: │ │ • SPDP Writer - 广播本地 Participant 信息 │ │ • SPDP Reader - 接收远程 Participant 信息 │ │ │ │ 消息: PARTICANT_DATA │ │ │ │ 与 EDP 关系: │ │ • PDP 先于 EDP 执行 │ │ • PDP 发现 Participant │ │ • EDP 发现 Endpoint (Writer/Reader) │ │ │ └────────────────────────────────────────────────────────────────────┘
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/27 6:42:22

构建智能视频数据库:基于AI的内容解析与高效检索系统

1. 项目概述:一个为视频内容打造的专属数据库如果你和我一样,经常需要处理大量的视频素材——无论是个人Vlog剪辑、公司宣传片制作,还是自媒体内容创作——那你一定体会过那种“大海捞针”的痛苦。明明记得某个片段里有需要的画面&#xff0c…

作者头像 李华
网站建设 2026/4/27 6:35:45

终极jq调试指南:7个高效技巧解决JSON数据处理难题

终极jq调试指南:7个高效技巧解决JSON数据处理难题 【免费下载链接】jq Command-line JSON processor 项目地址: https://gitcode.com/GitHub_Trending/jq/jq jq作为一款强大的命令行JSON处理器,在数据处理过程中难免会遇到复杂的转换逻辑和难以排…

作者头像 李华
网站建设 2026/4/27 6:34:42

CryFS性能优化指南:提升加密文件系统读写速度的完整方案

CryFS性能优化指南:提升加密文件系统读写速度的完整方案 【免费下载链接】cryfs Cryptographic filesystem for the cloud 项目地址: https://gitcode.com/gh_mirrors/cr/cryfs CryFS是一款专注于云存储场景的加密文件系统,通过强大的加密技术保护…

作者头像 李华
网站建设 2026/4/27 6:32:37

如何使用HTTPie CLI与GitHub Actions构建高效API测试自动化工作流

如何使用HTTPie CLI与GitHub Actions构建高效API测试自动化工作流 【免费下载链接】cli 🥧 HTTPie CLI — modern, user-friendly command-line HTTP client for the API era. JSON support, colors, sessions, downloads, plugins & more. 项目地址: https:/…

作者头像 李华
网站建设 2026/4/27 6:29:28

FLUX.1-dev新手必看:从零开始,10分钟学会AI图片生成

FLUX.1-dev新手必看:从零开始,10分钟学会AI图片生成 你是不是也刷到过那些惊艳的AI生成图片,心里痒痒的,想自己动手试试,但又觉得门槛太高?一看到“模型部署”、“工作流”、“节点”这些词就头大&#xf…

作者头像 李华