连接到不同计算机上的会话DBus

时间:2013-10-02 13:09:27

标签: c++ qt dbus qtdbus

我可以通过连接到会话总线来运行我的Qt DBus测试:

QDBusConnection connection = QDBusConnection::sessionBus();
connection.registerService(...)
....
TestserviceInterface testserviceInterface( .... , connection, &a);

但我可以从另一台计算机连接到此DBus。我知道我可以这样做:

 connection = QDBusConnection::connectToPeer("tcp:host=127.0.0.1,port=45000", Testservice::ServiceName);

但我如何获得该端口?无论我尝试过什么,似乎都没有联系。或者我在这里错误的路径,需要我们Peer 2 Peer DBus而不是会话总线?

我几乎可以肯定服务名称是正确的,因为我可以看到qdbusviewer。当我使用dbus-monitor输出对我来说意义不大时,我看不到任何端口等。

知道我怎么能从另一台电脑连接?

PS:我知道有一些像gabriel这样的隧道通过SSH(http://gabriel.sourceforge.net/howto.html)。这是我的目标,我正在寻找“直接连接”。

1 个答案:

答案 0 :(得分:1)

会话总线守护程序通常侦听unix socket /var/run/dbus/system_bus_socket(检查/usr/local/etc/dbus-1/session.conf配置),这意味着您无法通过tcp远程访问它。在运行总线守护程序的计算机上启动某种端口转发(例如,使用socat)或将其配置为侦听tcp。