dbus总是需要总线吗

Posted

技术标签:

【中文标题】dbus总是需要总线吗【英文标题】:Is a bus always necessary for dbus 【发布时间】:2012-07-21 12:39:17 【问题描述】:

我正在尝试使用 DBUS 的低级 c-api 通过套接字实现服务器-客户端。我的问题是..是否有必要始终使用总线进行 dbus 通信。 BUS 是否意味着一个额外的 dbus-daemon 实例。

【问题讨论】:

【参考方案1】:

是的,您需要一条用于 DBus 通信的总线。总线是一个通信通道,仅此而已。更多的总线并不意味着更多的 Dbus 守护进程实例,它只是意味着更多的通信通道。

在一个系统中,您通常有一个 DBus 守护程序和一个或多个总线。每条总线都用于某种类型的消息(在您的应用程序中定义)。

2 应用程序可以绕过守护程序通过 DBus 进行通信,方法是指定您要向其发送信号/方法的客户端的名称(DBus 标准允许这样做)。但是,我认为没有提供此功能的 DBus 绑定。但是如果你想使用 DBus 的原始 C API,你可以自己实现它。您可以查看this discussion 了解有关该主题的更多信息。

【讨论】:

感谢您的回答。我得到了一个使用 GLIB DBUS 绑定监听 tcp 套接字设置的服务器。但是客户端需要使用 dbus 低级 c-api。我无法识别作为 dbus-daemon 的“接口”的 API 部分以及不是的部分。任何指针?我能找到任何使用套接字的 dbus 低级 c-api 示例应用程序吗? 你可以看看低级C API手册here。与消息总线交互的功能似乎在this page 上。您可以找到有关使用低级 API here 的小教程。希望对您有所帮助。【参考方案2】:

不确定 C API,但您可以使用我的 node.js dbus 实现直接连接客户端和服务器。这是example

【讨论】:

以上是关于dbus总是需要总线吗的主要内容,如果未能解决你的问题,请参考以下文章

DBUS-“服务”和“总线名称”的区别

dbus 如何重新连接到新的会话总线守护进程

Linux DBUS总线

获取由消息发送者的“dbus_request_name”设置的总线名称

linux 进程间通信 dbus-glib实例详解二(上) 消息和消息总线(附代码)

拆解大数据总线平台DBus的系统架构