DBUS是什么 如何使用

article/2025/10/1 4:21:07

DBus提供了一种低延时,低开销,高可用性的进程间通信方式,其以消息作为驱动,采用二进制的协议,实现一对一及多对多的对等通信,避免通信的序列化(编码过程)过程,提高通信效率.DBus进程通信的核心是提供了一个后台中转守护进程,需要通信的进程首先连接到DBus守护进程,在想要发送消息时,其先发送到守护进程,再通过DBus守护进程转到目标进程中.守护进程相当于消息流通的路由器的角色,是一个高效的消息管道.具体工作模式:

DBus消息主要有四类:
方法调用信息MethodCall:此消息将会触发一个函数调用
方法调用返回MethodReturn:当函数执行完之后返回执行结果给调用进程
错误消息Error Signal:函数执行触发错误时发送此消息
通知消息Signal:可以理解为一个事件,不触发函数的调用,但是对此消息感兴趣的进程可以监听此消息并进行处理.
DBus通信模式可以降低系统开发复杂度和耦合性,提升模块能力的复用性和开发效率.通常对于移动端开发使用C/S模式,客户端与服务通过DBus通信机制,在约定好接口后就可以独立开发,彼此不再依赖和影响.
进程间通信主要有两种接入方式,一种时提供功能服务进程,其需要注册对外开发的方法或信号,一种时以客户端身份接入,访问其他进程提供的功能

原文链接:https://blog.csdn.net/weixin_45492457/article/details/121486665

https://blog.csdn.net/weixin_45492457/article/details/121486665?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166693100616782395358018%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=166693100616782395358018&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_ecpm_v1~rank_v31_ecpm-8-121486665-null-null.142v62pc_search_tree,201v3control_1,213v1t3_control2&utm_term=DBUS%E6%80%8E%E4%B9%88%E4%BD%BF%E7%94%A8&spm=1018.2226.3001.4187

Socket:

前面提到的管道,消息队列,共享内存,信号量和信号都是在同一台主机上进行进程间通信,如果想要跨网络和不同主机上的进程进行通信,则需要用到socket。

实际上,Socket不仅可以跨网络和不同主机进行进程间通信,还可以在同一主机进行进程间通信。

Socket是操作系统提供给程序员操作网络的接口,根据底层不同的实现方式,通信方式也不同。

Socket的系统调用:

int socket(int domain, int type, int protocal)

针对TCP的Socket通信:
在这里插入图片描述

服务端和客户端初始化Socket,得到文件描述符
服务端调用bind,绑定IP和端口
服务端调用listen,进行监听
服务端调用accept,等待客户端连接
客户端调用connect,向服务端发起连接请求。(TCP三次握手)
服务端调用accept返回用于传输的Socket的文件描述符(和第一点得到的Socket不同)
客户端使用write写入数据,服务端调用read读取数据
客户端断开连接时会调用close,服务端也会调用close(TCP四次挥手)
这里要注意的是,调用accept,连接成功得到的Socket是用来传输数据的,而第一次初始化Socket是用来监听的,是两个不同作用的Socket。

针对UDP的Socket通信:

在这里插入图片描述


http://chatgpt.dhexx.cn/article/8HePyXR4.shtml

相关文章

dbus总线通信的原理和使用

1.什么是D-Bus D-Bus是一种高级的进程间通信机制,它由freedesktop.org项目提供,使用GPL许可证发行。D-Bus最主要的用途是在Linux桌面环境为进程提供通信,同时能将Linux桌面环境和Linux内核事件作为消息传递到进程。注册后的进程可通过总线接…

制作maven-archeType

制作maven-archeType 项目背景 解决每次开发新项目,要创建很多目录结构或者从老项目中修改包名,pom等,所以就自己制作一个项目骨架,便于以后新项目目录结构生成。 制作maven-archeType 1.自己开发一个maven-archeType项目&…

[WARNING] No archetype found in remote catalog. Defaulting to internal catalog(已解决)

前言: 遇到问题后,首先,在网络上查找答案。结果告诉我,让我重启IDEA,可是我使用的是CMD命令行,根本没有使用IDEA。或者,告诉我如何操作,却没有解释问题发生的根本原因。于是&#xf…

idea自定义archetype及错误处理

介绍:公司内部会制定自己的规范及包结构。当创建新项目的时候就需要选择骨架,即可生成包结构。本文章简单介绍如何创建,解决遇到的各种问题。 一、创建项目。 idea点击file--->new--->project--->点击左侧的Spring initializr- 图2…

Maven 三种archetype说明合集

Maven 三种archetype说明合集【转载】_maven-archetype-quickstart_太阳神LoveU的博客-CSDN博客 新建Maven project项目时,需要选择archetype。 那么,什么是archetype? archetype的意思就是模板原型的意思,原型是一个Maven项目模…

maven自定义archetype

在开发过程中我们经常会创建一系列结构类似的新项目,这些项目结构和基础配置基本或完全一致,maven就提供了archetype类型来规定新建项目的结构及基础配置,利用archetype就可以快速简单的搭建新项目。 一、创建Maven项目的一般步骤 一般情况下…

自定义Maven Archetype模板工程

文章目录 Maven Archetype介绍什么是Maven Archetype为什么要有模板工程创建模板工程的三种方式 常用的archetypemaven-archetype-quickstartmaven-archetype-webapp 自定义一个Maven模板工程生成模板上传模板到仓库(此步骤可选) 使用模板工程 源码地址:https://git…

如何选择创建Maven的archetype

前言: 在使用IDEA的Maven插件创建我们的maven项目时提供了如图所示的原型,为我们快速创建合适的项目提供了很大的帮助。下面我们将详细介绍各个archetype。 官网对archetype(原型)的介绍: http://maven.apache.org/guides/introduction/in…

Maven model archetype说明

前言 新建一个model,其中有一个选项“Create from archetype”感觉很奇怪,我就来了解一下这些内容,做一下笔记, 什么是Archetype Archetype翻译过来就是:骨架,项目工程骨架。 Archetype是Maven工程的模板…

Maven自定义Archetype项目模板

前言:在某课网上学习到可以使用命令mvn archetype:create-from-project来创建自己的项目模板(文中提及的项目模板即 原型 archetype),对此我十分感兴趣。但是,遗憾的是,老师没有介绍如何去构建这样一个特殊…

Maven-Archetype Catalog

当用户以不指定Archetype坐标的方式使用maven-archetype-plugin的时候,会得到一个Archetype列表供选择,这个列表的信息来源于一个名为archetype-catalog.xml的文件,如: archetype-catlog.xml能提供Archetype的信息,那么…

Idea archetype介绍

一、背景 Idea创建项目时,被一堆archetype混淆视听,犹豫不决决定彻底弄懂他 1.关键词 Archetype: 骨架Maven: Java代码编译时的一个工具(软件讲究运行时、和编译时两种状态) 2.网友介绍 Archetype是Maven工程的模板工具包。一…

Maven Archetype

目录 Maven Archetype工程结构创建Maven Archetype创建支持生成多模块的Maven Archetype在idea中添加自定义Maven Archetype 最开始接触到maven archetype,是在通过idea创建project时,可以选择Maven -> Create from archetype, 在输入proj…

自定义idea archetype

编写 archetype 元数据 通过plugin从现有项目中导出 1、引入plugin <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-archetype-plugin</artifactId><version>3.2.0</version></plugin>2、通过maven…

Maven 三种archetype说明

新建Maven project项目时,需要选择archetype。 那么,什么是archetype? archetype的意思就是模板原型的意思,原型是一个Maven项目模板工具包。一个原型被定义为从其中相同类型的所有其它事情是由一个原始图案或模型。名称配合,因为我们正在努力提供一种系统,该系统提供了…

maven中archetype(原型)的使用及创建

当我们在idea中创建项目时&#xff0c;经常会见到如下界面选择&#xff1a; archetype也就是原型&#xff0c;准确说是一个项目模板&#xff0c;我们可以根据该模板来生成项目。 我就不介绍图形界面的创建方式了&#xff0c;一步一步太啰嗦了&#xff0c;我们用命令方式创建。…

创建自定义的archetype(项目模板)

一、archetype简介 Archetype是一个Maven项目的模板工具包&#xff0c;它定义了一类项目的基本架构。Archetype为开发人员提供了创建Maven项目的模板&#xff0c;同时它也可以根据已有的Maven项目生成参数化的模板。通过archetype&#xff0c;开发人员可以很方便地将一类项目的…

Maven创建时archetype的选择说明

新建Maven project项目时&#xff0c;需要选择archetype。 那么&#xff0c;什么是archetype&#xff1f; archetype的意思就是模板原型的意思&#xff0c;原型是一个Maven项目模板工具包。一个原型被定义为从其中相同类型的所有其它事情是由一个原始图案或模型。名称配合&am…

Maven的Archetype简介

简单的说&#xff0c;Archetype是Maven工程的模板工具包。一个Archetype定义了要做的相同类型事情的初始样式或模型。这个名称给我们提供来了一个一致的生成Maven工程的方式。Archetype会帮助作者给用户创建Maven工程模板&#xff0c;并给用户提供生成相关工程模板版本的参数化…

c语言学习--强制类型转换

C语言中关于强制类型转换问题 由于朋友问到&#xff0c;所以整理了一份&#xff0c;若关于一些认识有错误还望指出...... ● 如果一个运算符两边的运算数类型不同&#xff0c;先要将其转换为相同的类型&#xff0c;即较低类型转换为较高类型&#xff0c;然后再参加运算&#xf…