1

我可以通过连接到会话总线来运行我的 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)。这不是我要做的,我正在寻找“直接联系”。

4

1 回答 1

1

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

于 2013-10-03T12:18:46.440 回答