DBUS是什么 如何使用

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

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

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

DBUS是什么 如何使用_第1张图片

Socket:

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

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

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

Socket的系统调用:

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

针对TCP的Socket通信:
DBUS是什么 如何使用_第2张图片

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

针对UDP的Socket通信:

DBUS是什么 如何使用_第3张图片

你可能感兴趣的:(Linux系统,网络,进程)