当前位置: 首页 > news >正文

ros1服务通信如何保证消息对应

1. 你们用的是「同一份合同」—— .srv 文件

你有一个文件:AddTwoInts.srv

plaintext

int64 a

int64 b

---

int64 sum

这个文件就是 双方的约定:

- 客户端 必须发 a、b

- 服务端 必须收 a、b

- 服务端 必须回 sum

- 客户端 必须收 sum

谁都不能乱改。

2. 系统根据合同,自动生成两套“固定格式”

编译后,ROS 自动给你生成两个东西:

客户端用的格式:

cpp

struct AddTwoInts {

Request request; // 固定!

Response response; // 固定!

};

服务端用的格式:

cpp

struct Request {

int64 a; // 固定!

int64 b; // 固定!

};

struct Response {

int64 sum; // 固定!

};

注意:

- request、response、a、b、sum 全是固定名字

- 你改不了,系统强制认识

3. 客户端只能往「规定位置」放数据

你在客户端写:

cpp

srv.request.a = 10;

srv.request.b = 20;

这句话的意思:

- srv = 整个包裹

- .request = 系统规定的发送区(只能放要发的数据)

- a 、 b = 合同里写死的两个位置

你没有别的地方可以放!

只能放这里。

4. 服务端只能从「规定位置」拿数据

服务端代码:

cpp

bool add(Request &req, Response &res)

{

res.sum = req.a + req.b;

}

- Request 类型 = 系统规定的接收格式

- 里面 只有 a 和 b

- 服务端 只能读 a 和 b,没有别的东西可读

5. 服务名一样 → 系统只把你们俩配对

客户端:

cpp

serviceClient("add_two_ints");

服务端:

cpp

advertiseService("add_two_ints");

- 名字一样 → ROS 只把你们两个连起来

- 别人收不到,你也发不到别人那

6. 最终保证:四层锁死

我给你总结成4 条铁律,你马上通透:

1. 合同一样(同一个 .srv)

2. 格式一样(自动生成的结构体)

3. 位置固定(只能放 request 里的 a、b)

4. 名字一样(同一个服务名)

最直白的比喻

客户端和服务端 = 两个人传纸条

- .srv = 提前约定好的纸条格式

- request = 纸条的正面(写问题)

- response = 纸条的反面(写答案)

- a、b = 正面必须写的两个空

- sum = 反面必须写的一个空

http://www.jsqmd.com/news/500189/

相关文章:

  • 【会议投稿指南】2026年4-5月人工智能学术会议信息汇总 | 人工智能领域国际学术会议征稿信息速览 | AI人必备合集,一键速览AI会议冲刺表,高录用率+EI/Scopus双保障+稳EI检索!
  • 2026年口碑好的灯饰照明公司推荐:护眼灯饰照明/服装店定制灯饰照明/嘉兴旧房改造灯饰照明公司推荐 - 行业平台推荐
  • 美国有哪些公司可以提供OPT挂靠?合规渠道+避坑指南(2026版) - 品牌排行榜
  • 【网络协议】P2P技术
  • 老房焕新,决胜未来:2026年高性价比翻新品牌深度解析与选型指南 - 2026年企业推荐榜
  • 客户拜访记录app免费软件好用吗? - 企业数字化观察家
  • 【研报239】全球贸易变局中的印度汽车零部件产业研究报告
  • 想养一只AI“龙虾”?蓝队云2核4G+10M带宽的配置就够了!
  • 温州地区摩托车高压包市场观察与品牌推荐 - 2026年企业推荐榜
  • 财务AI怎么选?三大技术路径与厂商对比解析(2026)
  • db-scheduler task 类型
  • 2026年质量好的油管内衬设备工厂推荐:油管内衬设备生产线/油管内衬设备翻边机/油管内衬设备拔管机厂家选择指南 - 行业平台推荐
  • 物业人必看:爆火AI“龙虾”OpenClaw,到底要不要跟风?
  • 图论·图的存储
  • 2026年热门的废水低温蒸发器厂家推荐:苏州低温蒸发器实力品牌厂家推荐 - 行业平台推荐
  • UE5VSC++开发 一 环境准备
  • 磁性元件企业要的优秀电源采购商什么样?
  • GPUPixel项目分析
  • 系统集成项目管理(中项随笔-1.1.3信息化内涵)
  • Java集合——List
  • LiteLLM + vLLM模型调用引擎架构
  • Android 通过Http实现一个网络速率检测工具
  • python http请求报错SSL
  • 虚拟内存的运作
  • 手机聊天记录等数据恢复探讨
  • Ansys Zemax | 在OpticStudio中模拟高阶激光光束
  • 人工智能三级好考吗?考试难度解析
  • 知识付费开发到底难不难?小白也能看懂的搭建流程
  • 2026年国产算力产业指南:自主软硬件+开源生态,产业链核心标的梳理
  • 多卡聚合通信在无人快递车中的应用价值