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
并请联系谭海燕本人或者前往谭海燕个人主页留言

 

时间: 2025-01-19 19:11:06

QtDBus编程详解(一)的相关文章

QtDBus编程详解(二)

                                                           QtDBus编程详解(二)   我在上一篇博客QtDBus编程详解(一)中主要讲述了与QtDBus以及DBus相关的基本概念,这一章节,我将重点讲述关于QtDBus通信.   QtDBus通信,就必须有服务端和客户端(关键是弄清楚哪一端是server,哪一端是client). 我们先来看看,QtDBus通信,server和client需要做些什么工作.   server: 1.申

PHP面向对象编程详解:类和对象

PHP面向对象编程详解:类和对象 从OOP的视角看,不应区分语言.无论是C++.无论是Java.无论是.net还有更多面向对象的语言,只要你了解了OO的真谛,便可以跨越语言,让你的思想轻松的跳跃.便没有对于Java..net.PHP 之间谁强谁弱的争执了. 希望这个介绍PHP5面向对象编程(OOP)的资料能让初学者受益,能让更多的PHPer开始转向OO的编程过程. 相对PHP4,PHP5在面向对象方面改变了很多.我们将只介绍PHP5环境下的面向对象.而我们必须改变自己来跟随PHP5的发展.如果代

Python的装饰器模式与面向切面编程详解

  这篇文章主要介绍了Python的装饰器模式与面向切面编程详解,概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能,本文详细了装饰器模式的方方面面,然后引出面向切面编程知识,需要的朋友可以参考下 今天来讨论一下装饰器.装饰器是一个很著名的设计模式,经常被用于有切面需求的场景,较为经典的有插入日志.性能测试.事务处理等.装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量函数中与函数功能本身无关的雷同代码并继续重用.概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能. 1

PHP SOCKET编程详解

  这篇文章主要介绍了PHP SOCKET编程详解,需要的朋友可以参考下 1. 预备知识 一直以来很少看到有多少人使用php的socket模块来做一些事情,大概大家都把它定位在脚本语言的范畴内吧,但是其实php的socket模块可以做很多事情,包括做ftplist,http post提交,smtp提交,组包并进行特殊报文的交互(如smpp协议),whois查询.这些都是比较常见的查询. 特别是php的socket扩展库可以做的事情简直不会比c差多少. php的socket连接函数 1.集成于内核

linux多线程编程详解教程

 这篇文章主要介绍了linux多线程编程详解教程,提供线程通过信号量实现通信的代码,大家参考使用吧 线程分类   线程按照其调度者可以分为用户级线程和核心级线程两种.   (1)用户级线程  用户级线程主要解决的是上下文切换的问题,它的调度算法和调度过程全部由用户自行选择决定,在运行时不需要特定的内核支持.在这里,操作系统往往会提供一个用户空间的线程库,该线程库提供了线程的创建.调度.撤销等功能,而内核仍然仅对进程进行管理.如果一个进程中的某一个线程调用了一个阻塞的系统调用,那么该进程包括该进程

【强烈强烈推荐】《ORACLE PL/SQL编程详解》全原创(共八篇)--系列文章导航

原文:[强烈强烈推荐]<ORACLE PL/SQL编程详解>全原创(共八篇)--系列文章导航 <ORACLE PL/SQL编程详解>    系列文章目录导航     --通过知识共享树立个人品牌.           本是成书的,但后来做其他事了,就无偿的贡献出来,被读者夸其目前为止最"实在.经典"的写ORACLE PL/SQL编程的文章-!   觉得对你有帮助,请留言与猛点推荐,谢谢.     [推荐]ORACLE PL/SQL编程详解之一:PL/SQL 程序

[强烈推荐]ORACLE PL/SQL编程详解之七:程序包的创建与应用(聪明在于学习,天才在于积累!)

原文:[强烈推荐]ORACLE PL/SQL编程详解之七:程序包的创建与应用(聪明在于学习,天才在于积累!) [强烈推荐]ORACLE PL/SQL编程详解之七:   程序包的创建与应用(聪明在于学习,天才在于积累!) --通过知识共享树立个人品牌.     继上七篇:            [推荐]ORACLE PL/SQL编程详解之一:PL/SQL 程序设计简介(千里之行,始于足下)            [顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,

[推荐]ORACLE PL/SQL编程详解之一:PL/SQL 程序设计简介(千里之行,始于足下)

原文:[推荐]ORACLE PL/SQL编程详解之一:PL/SQL 程序设计简介(千里之行,始于足下) [推荐]ORACLE PL/SQL编程详解之一: PL/SQL 程序设计简介(千里之行,始于足下) --通过知识共享树立个人品牌. 继上六篇:        [顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功)        [推荐]ORACLE PL/SQL编程详解之三:PL/SQL流程控制语句(不给规则,不成方圆)        [推荐]ORA

[顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功)

原文:[顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功)  [顶]ORACLE PL/SQL编程详解之二:   PL/SQL块结构和组成元素(为山九仞,岂一日之功)     继上四篇:ORACLE PL/SQL编程之八:把触发器说透                ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!)                [推荐]ORACLE PL/SQL编程之四:把游标说透(不怕做不到,只怕想不