fastrtps 网络端口的计算-以共享内存为例

root用户,运行./fastrtps/examples/cpp/dds/HelloWorldExampleSharedMem/DDSHelloWorldExampleSharedMem publisher

创建以下文件描述符

$ ll /dev/shm/
总用量 2232
drwxrwxrwt  2 root root     260 111 09:37 ./
drwxr-xr-x 19 root root    4640 107 13:14 ../
-rw-rw-rw-  1 root root 2122272 111 09:37 fastrtps_fb0567544297e750
-rw-rw-rw-  1 root root       0 111 09:37 fastrtps_fb0567544297e750_el
-rw-rw-rw-  1 root root   52400 111 09:37 fastrtps_port7400
-rw-rw-rw-  1 root root       0 111 09:37 fastrtps_port7400_sl
-rw-rw-rw-  1 root root   52400 111 09:37 fastrtps_port7410
-rw-rw-rw-  1 root root       0 111 09:37 fastrtps_port7410_el
-rw-rw-rw-  1 root root   52400 111 09:37 fastrtps_port7411
-rw-rw-rw-  1 root root       0 111 09:37 fastrtps_port7411_el
-rw-rw-rw-  1 root root      32 111 09:37 sem.fastrtps_port7400_mutex
-rw-rw-rw-  1 root root      32 111 09:37 sem.fastrtps_port7410_mutex
-rw-rw-rw-  1 root root      32 111 09:37 sem.fastrtps_port7411_mutex

yong用户,运行./fastrtps/examples/cpp/dds/HelloWorldExampleSharedMem/DDSHelloWorldExampleSharedMem subscriber

$ ll /dev/shm/
总用量 2344
drwxrwxrwt  2 root root     360 111 09:38 ./
drwxr-xr-x 19 root root    4640 107 13:14 ../
-rw-rw-rw-  1 root root 2122272 111 09:37 fastrtps_fb0567544297e750
-rw-rw-rw-  1 root root       0 111 09:37 fastrtps_fb0567544297e750_el
-rw-rw-rw-  1 root root   52400 111 09:37 fastrtps_port7400
-rw-rw-rw-  1 root root       0 111 09:37 fastrtps_port7400_sl
-rw-rw-rw-  1 root root   52400 111 09:37 fastrtps_port7410
-rw-rw-rw-  1 root root   52400 111 09:37 fastrtps_port7411
-rw-rw-rw-  1 root root       0 111 09:37 fastrtps_port7411_el
-rw-rw-rw-  1 yong yong   52400 111 09:37 fastrtps_port7412
-rw-rw-rw-  1 yong yong       0 111 09:37 fastrtps_port7412_el
-rw-rw-rw-  1 yong yong   52400 111 09:37 fastrtps_port7413
-rw-rw-rw-  1 yong yong       0 111 09:37 fastrtps_port7413_el
-rw-rw-rw-  1 root root      32 111 09:37 sem.fastrtps_port7400_mutex
-rw-rw-rw-  1 root root      32 111 09:37 sem.fastrtps_port7410_mutex
-rw-rw-rw-  1 root root      32 111 09:37 sem.fastrtps_port7411_mutex
-rw-rw-rw-  1 yong yong      32 111 09:37 sem.fastrtps_port7412_mutex
-rw-rw-rw-  1 yong yong      32 111 09:37 sem.fastrtps_port7413_mutex

fastrtps_fb0567544297e750_el独占锁 只有pub才会创建
el是 RobustExclusiveLock 缩写
sl是RobustSharedLock 缩写

本程序默认 domainId =0、participantId=0
PG=Paricipant Id Gain 默认2
rtps端口计算规则:
应用首个进程的端口计算方法,eg:pid=1;每个进程端口默认+PG(2),eg:Pid=2

Traffic typeWell-known port expressionpid = 1pId = 3
Metatraffic multicast7400 + 250 * domainId74007400
Metatraffic unicast7400 + 250 * domainId + 10 + 2 * participantId74107412
User multicast7400 + 250 * domainId + 1
User unicast7400 + 250 * domainId + 11 + 2 * participantId74117413
fasrtps 代码:
RTPSParticipantImpl.cpp
bool RTPSParticipantImpl::createReceiverResources(LocatorList_t& Locator_list,bool ApplyMutation,bool RegisterReceiver)
{//略...for (auto it_loc = Locator_list.begin(); it_loc != Locator_list.end(); ++it_loc){bool ret = m_network_Factory.BuildReceiverResources(*it_loc, newItemsBuffer, max_receiver_buffer_size);if (!ret && ApplyMutation){uint32_t tries = 0;while (!ret && (tries < m_att.builtin.mutation_tries)){tries++;applyLocatorAdaptRule(*it_loc);ret = m_network_Factory.BuildReceiverResources(*it_loc, newItemsBuffer, max_receiver_buffer_size);}}ret_val |= !newItemsBuffer.empty();for (auto it_buffer = newItemsBuffer.begin(); it_buffer != newItemsBuffer.end(); ++it_buffer){std::lock_guard<std::mutex> lock(m_receiverResourcelistMutex);//Push the new items into the ReceiverResource bufferm_receiverResourcelist.emplace_back(*it_buffer);//Create and init the MessageReceiverauto mr = new MessageReceiver(this, (*it_buffer)->max_message_size());m_receiverResourcelist.back().mp_receiver = mr;//Start receptionif (RegisterReceiver){m_receiverResourcelist.back().Receiver->RegisterReceiver(mr);}}newItemsBuffer.clear();}return ret_val;
}Locator_t& RTPSParticipantImpl::applyLocatorAdaptRule(Locator_t& loc)
{// This is a completely made up rule// It is transport responsibility to interpret this new port.loc.port += m_att.port.participantIDGain;return loc;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/462707.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JSON交互处理

目录 一、什么是JSON 二、JSON和JavaScript对象互转 ​三、Controller返回JSON数据 3.1 使用Jackson 编写Controller 1. 一个对象 2. 多个对象 3. 输出时间对象 4. 优化&#xff1a;抽取为工具类 一、什么是JSON Json是JavaScript对象的字符串表示法&#xff0c;它用…

WPF+MVVM案例实战(十二)- 3D数字翻牌计时实现

文章目录 1、运行效果2、功能实现1、文件创建2、控件代码实现3、控件引用与菜单实现1.引用用户控件2.按钮菜单3、计时器界面实现4、源代码获取1、运行效果 3D数字翻牌计时 2、功能实现 1、文件创建 打开项目 Wpf_Examples ,在用户控件 UserControlLib 中创建 NumberFoldi…

无人机多机编队控制算法详解!

一、主要算法类型 长机-僚机法&#xff08;Leader-Follower&#xff09; 原理&#xff1a;通过设定一架无人机作为长机&#xff08;领航者&#xff09;&#xff0c;其他无人机作为僚机&#xff08;跟随者&#xff09;&#xff0c;僚机根据长机的信息来调整自身的飞行状态&#…

RL学习笔记-表格型方法

参考资料&#xff1a;蘑菇书&#xff1b;《世界冠军带你从零实践强化学习》B站课程 Q表格 前面讲马尔可夫过程的时候提到过Q函数&#xff0c;Q函数是在某状态s下采取某动作a得到的平均奖励&#xff08;状态动作价值&#xff09;。Q表格就是在状态和动作两个维度上可视化的一张二…

基于SSM+微信小程序的订餐管理系统(点餐2)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 基于SSM微信小程序的订餐管理系统实现了管理员和用户。管理端实现了 首页、个人中心、用户管理、菜品分类管理、菜品信息管理、订单信息管理、配送信息管理、菜品评价管理、订单投诉管理、…

太速科技-712-6U VPX飞腾处理器刀片计算机

6U VPX飞腾处理器刀片计算机 一、产品概述 该产品是一款基于国产飞腾FT-2000四核处理器或D2000八核处理器的高性能6U VPX刀片式计算机。产品提供了可支持全网状交换的高速数据通道&#xff0c;其中P1、P2均支持1个PCIe x16 Gen3或2个PCIe x8 Gen3或4个PCIe x4 Gen3总…

uaGate SI——实现OT与IT的安全连接

对于许多制造商来说&#xff0c;诸如工业物联网&#xff08;IIoT&#xff09;、信息物理系统&#xff08;CPS&#xff09;和大数据等概念已经开始与其智能工厂的愿景紧密相连。智能工厂是将信息技术&#xff08;IT&#xff09;的数字世界与运营技术&#xff08;OT&#xff09;的…

51c大模型~合集12

我自己的原文哦~ https://blog.51cto.com/whaosoft/11564858 #ProCo 无限contrastive pairs的长尾对比学习 , 个人主页&#xff1a;https://andy-du20.github.io 本文介绍清华大学的一篇关于长尾视觉识别的论文: Probabilistic Contrastive Learning for Long-Tailed Visua…

基于FPGA的图像双线性插值算法verilog实现,包括tb测试文件和MATLAB辅助验证

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 这里实现的是256*256双线性插值到512*512的系统模块 局部放大&#xff1a; 将数据导入到matlab&#xff0c;得到插值效果…

书生大模型第一关Linux基础知识

任务一&#xff1a;完成SSH连接与端口映射并运行hello_world.py 1.SSH及其端口映射 2.在VSCode中安装插件&#xff1a; 3.创建开发机 最后点击创建&#xff0c;然后可能需要等待一段较长的时间&#xff0c;大概需要5分钟左右&#xff0c;如果需要排队则更长时间 然后选择…

SpringBoot配置Access-Control-Allow-Origin

1. 配置过滤器 Component WebFilter(urlPatterns "/*", filterName "CorsFilter") public class CorsFilter implements Filter {Overridepublic void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, Serv…

如何压缩pdf文件的大小?5分钟压缩pdf的方法推荐

如何压缩pdf文件的大小&#xff1f;在现代办公和学习中&#xff0c;PDF文件因其稳定性和广泛的兼容性被广泛使用。然而&#xff0c;随着文件内容的增多&#xff0c;制作好的PDF文件常常变得过大&#xff0c;给使用带来了诸多不便。无论是电子邮件附件的发送&#xff0c;还是在线…

二十九、Python基础语法(继承-上)

一、概念介绍 继承&#xff1a;继承描述的是类与类之间的关系&#xff0c;集成之后子类对象可以直接使用父类中定义的方法的属性&#xff0c;可以减少代码冗余&#xff0c;提高编码效率。 二、继承语法 三、继承例子 # 定义一个父类 Animal class Animal:def __init__(self,…

Creo/Proe 入门基础教程(二)

本文章继续接着《Creo/Proe 入门基础教程&#xff08;一&#xff09;》的内容往下介绍&#xff1a; 2、绘制草图 草图绘制就是建立2D的截面图&#xff0c;然后以此截面生成拉伸、旋转等 特征实体。构成2D截面的要素有3个&#xff1a;2D几何图形&#xff08;Geometry&#xff0…

ZooKeeper 客户端API操作

文章目录 一、节点信息1、创建节点2、获取子节点并监听节点变化3、判断节点是否存在4、客户端向服务端写入数据写入请求直接发给 Leader 节点写入请求直接发给 follow 节点 二、服务器动态上下线监听1、监听过程2、代码 三、分布式锁1、什么是分布式锁?2、Curator 框架实现分布…

江协科技STM32学习- P30 FlyMCU串口下载STLink Utility

&#x1f680;write in front&#x1f680; &#x1f50e;大家好&#xff0c;我是黄桃罐头&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​…

Java中的日期与时间对象:LocalDate类、LocalTime类、LocalDateTime类、DateTimeFormatter类

在 Java 中&#xff0c;LocalDate、LocalTime 和 LocalDateTime 是 java.time 包中的类&#xff0c;用于表示日期、时间和日期时间。这些类提供了不可变的日期与时间对象&#xff0c;是 Java 8 及以后版本中引入的一部分&#xff0c;用于替代旧的 java.util.Date 和 java.util.…

Java基于微信小程序的美食推荐系统(附源码,文档)

博主介绍&#xff1a;✌程序猿徐师兄、8年大厂程序员经历。全网粉丝15w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

杨辉三角形

大家好&#xff0c;今天给大家分享一下杨辉三角形是如何打印的&#xff0c;首先我们来看看它的原理。 我们先来看结果 1.如果把它看为一个二维数组&#xff08;包括后面的空格&#xff09;&#xff0c;那么它数字的这边是一个直角三角形&#xff0c;它的第一列和对角线都为1&a…

C语言进阶之我与指针的爱恨情仇(1)

一.前言 我们在初阶《指针》初阶C语言-指针-CSDN博客已经讲过了一些基础知识&#xff0c;知道了关于指针的一些概念-> 1.指针就是个变量&#xff0c;用来存放地址&#xff0c;地址唯一标识一块内存空间 2.指针的大小是固定的4/8个字节&#xff08;32位平台/64位平台&#xf…