服务器和客户端中不同的 Dbus 绑定

Posted

技术标签:

【中文标题】服务器和客户端中不同的 Dbus 绑定【英文标题】:Different Dbus bindings in server and client 【发布时间】:2013-02-23 17:42:58 【问题描述】:

我正在尝试实现 Dbus 客户端。 Dbus 服务器实际上是由第三方实现的,我不知道它使用什么绑定(但我猜是 gdbus)。现在我可以在我的客户端应用程序中使用 QDbus 绑定,而不管 Dbus 服务器中使用什么绑定吗? 如果是这样,如何在服务器(例如 glib 类型)和客户端(例如 qt 类型)之间管理数据类型(w.r.t. 复杂数据类型/用户定义的结构)?对此概念的解释将不胜感激。

【问题讨论】:

【参考方案1】:

DBus 上的所有类型都有 DBus 类型,绑定只是将它们转换为自己的格式。例如,uint32 类型在 C/C++ 中是 unsigned int,在 Java 绑定中是 UInt32

基本上,所有实现都需要知道消息的有线格式。只要他们理解这种格式,翻译成什么高级数据类型都没有关系。我不会真正称它们为复杂数据类型,因为您只能通过总线发送基本数据类型。

【讨论】:

以上是关于服务器和客户端中不同的 Dbus 绑定的主要内容,如果未能解决你的问题,请参考以下文章

DBus 是我要找的吗?

Bluez BLE 连接监控使用 DBUS-Python

如何通过 dbus 调用 varargs 函数?

Dbus/GLib 主循环,后台线程

使用 dbus 的简单客户端服务器

DBus 同步调用超时