QtDBus编程详解(一)

简介:

                                                       QtDBus编程详解(一)

DBus的出现,使得Linux进程间通信更加便捷,不仅可以和用户空间应用程序进行通信,而且还可以和内核的程序进行通信,可以说DBus使得Linux变得更加智能,更加具有交互性。我们可以把DBus看做是一个消息总线(bus)
 
首先介绍DBus的几个重要的基本概念。

具体的QDBus编程以及通信将在QtDBus编程详解(二)中进行详细介绍
 
DBus分为两种类型:
system bus(系统总线):用于系统(Linux)和用户程序之间进行通信和消息的传递。
session bus(回话总线):用于桌面(e.g. GNOME, KDE....)用户程序之间进行通信。一般我们用到的就是session bus。
这在我们建立于DBus总线的连接时需要选择,选择建立system bus连接或者session bus连接。
无论是system bus还是session bus,都不需要我们自己写,随着DBus的重大影响和作用,所有的Linux系统都支持DBus,而且DBus总线(system bus, session bus)都会以demon守护进程伴随系统一起启动。我们所要做的就是做相关的处理然后连接到总线上。
 
object path
在我们通常C++中,都会有object这个概念,用类创建一个实例就是一个object。在DBus通信中,这种由类定义的object叫native object。在DBus通信中,将一个object(native, remote)对象和一个路径绑定,当我们需要和该native object通信的时候,我们只需要吧消息发送到该路径。这个路径就叫object path。正因为是路径,所以object的格式斜杠作为分隔(/object/example)
 
DBus name
总线名,这是对每一个连接到Dbus上的连接进行标示。每一个连接到session ,system bus的连接也叫做Dbus。当创建连接成功之后,系统会给该总线分配一个唯一的名称,这个unique name通常是以":"开头,比如 :45-7等等。类比:DBus name 好比IP地址。
 Service name
服务名称。即DBus上提供的服务的名称。一个DBus可以提供多种服务。类比:hostname。
DBus通信的时候,连接到DBus之后,需要向系统注册服务,告知系统,我需要向外界提供何种服务。Service name是以点作为分隔(org.demo.myservice)

Interface
接口。在DBus中,interface类比于C++中的namespace。Interface内部是一些列的method和signal.这些method和signal都可以通过DBus通信发送消息进行调用。

以上概念看起来很模糊。我写了一个简单的DBus通信程序,并用工具对系统中的DBus进行观察。

 


 

 

 

 

 

我创建了一个DBus连接,系统分配的unique name名称是:(:1.93)
我创建了两个Server:
org.feiyinzilgd.DBusExample.one
org.feiyinzilgd.DBusExample.two
这两个service的DBus unique name都是(:1.93)
即:一个DBus总线上,提供了两个服务。

有两个Object path:
/
/Car

 

 

 

Object path提供了很多interface,例如:com.trolltech.Examples.Carinterface.
该interface下面提供了一些列的methods和signal.

 

 

 


 

版权申明:
转载文章请注明原文出处http://blog.csdn.net/feiyinzilgd/archive/2010/12/17/6081914.aspx
并请联系谭海燕本人或者前往谭海燕个人主页留言

 

目录
相关文章
|
数据可视化 数据库
|
6月前
编程题小练
编程题小练
52 0
7-81 编程团体赛
7-81 编程团体赛
175 0
|
JavaScript 前端开发 Java
|
程序员 测试技术 API
循序渐进学编程
软件开发人员是一个日新月异的领域—–IT中的大师,今天的编程方式与明天的编程或许截然不同,技术在不断地革新,新语言、新平台的如雨后春笋般出现、更好的解决方案的冒出,因此我们需要跟得上节奏,我们别无选择,唯有努力提高自己。
151 0
循序渐进学编程
|
机器学习/深度学习 人工智能 自然语言处理
编程需要了解的问题
  儿童编程则是一门有趣的课程 ,与成人编程相比学习编程有着明确的目的,或者是为了加薪、跳槽。接下来给大家讲讲家长要了解的编程问题,希望对你们有帮助。许多重视教育的家长都意识到,让孩子从小就开始编程,培养编程思维是一种顺应时代的选择。当孩子在学习编程时,作为父母,有五个方面必须明确。1.什么是steam教育儿童编程,从简单的角度来说就是教儿童学习编程。有些家长不明白,编程这种大学计算机专业才会涉及的专业知识,为什么孩子也要学呢?情况就是这样的,随着人工智能的发展,我们孩子未来生活的世界将是一个用代码编写的高科技智能世界。想象一下,如果孩子那时候还没有编程思维,那么就很难融入那样一个社会。儿童编
151 0
|
Java 程序员
我似乎理解了编程的意义
编程的意义是什么,我又为什么要编程呢? 这是一个不时会浮现在我脑海中的问题,它来得并不频繁,但每次却都伴随着对自己职业生涯或人生目标的质疑而产生,令我感到些许困惑和不安。而在这十几年的职业生涯中,我也似乎总能在每个阶段为自己找到一个继续热爱编程的理由,直到它已无法解答再一次疑惑的产生。
1112 0
|
安全 数据安全/隐私保护
|
JSON 数据格式 开发者
下一篇
无影云桌面