我可以通过连接到会话总线来运行我的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)。这是不我的目标,我正在寻找“直接连接”。答案 0 :(得分:1)
会话总线守护程序通常侦听unix socket /var/run/dbus/system_bus_socket
(检查/usr/local/etc/dbus-1/session.conf
配置),这意味着您无法通过tcp远程访问它。在运行总线守护程序的计算机上启动某种端口转发(例如,使用socat
)或将其配置为侦听tcp。