c++ - 连接到不同计算机上的 session DBus

标签 c++ qt dbus qtdbus

我可以通过连接到 session 总线来运行我的 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 而不是 session 总线?

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

知道如何从另一台计算机进行连接吗?

PS:我知道有类似 gabriel 的东西可以通过 SSH 建立隧道(http://gabriel.sourceforge.net/howto.html)。这不是我要做的,我正在寻找“直接连接”。

最佳答案

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

关于c++ - 连接到不同计算机上的 session DBus,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19137703/

相关文章:

C++ 素数类

c++ - 是否可以使用 std::basic_string 作为 char* 的包装器?

c++ - Qt Designer - 窗口不会比带像素图的 QLabel 小

c - Bluez D 总线 : Bluetooth speaker Play/Pause/Next/Previous button handling

python - 根据/dev节点路径查找HAL对象

C++ 单个字符未通过套接字发送

c++ - 空指针的地址?

c++ - 查找歌曲的长度

python - pyqt - 无框架小部件出现奇怪的标题栏

qt - 通过 QDBus 发送 float