服务器重新启动后重新连接到 QDBus 服务器 (Qt C++)
Posted
技术标签:
【中文标题】服务器重新启动后重新连接到 QDBus 服务器 (Qt C++)【英文标题】:Re-connecting to QDBus server after server has been restarted (Qt C++) 【发布时间】:2016-07-23 19:34:30 【问题描述】:我正在测试使用 DBus 进行 QT C++ 项目 (Linux) 的进程间通信。
我没有使用总线守护程序,而是使用 unix 路径/套接字。
在穿越神秘的 QT DBUS 世界之后,一切似乎都很顺利,直到我想测试我的一个接口的稳健性。
杀死服务器进程并重新启动它后,连接超时..我清理连接对象(客户端)并尝试重新连接到服务器。
客户端似乎无法重新连接,我收到以下错误: 错误名称:org.freedesktop.DBus.Error.NoServer errMessage: 无法连接到套接字 /tmp/abcd: 连接被拒绝
我试过了: - QDBusConnection::disconnectFromPeer(addr); - 清理所有相关对象,因此不存在对连接的引用。
当我重新启动客户端时,连接到(重新启动的)服务器没有问题。
【问题讨论】:
【参考方案1】:发现问题! 似乎是 Qt 4.8.x 中的一个错误: https://bugreports.qt.io/browse/QTBUG-27973 https://codereview.qt-project.org/#/c/60709/
QDBusConnection::disconnectFromBus 和 QDBusConnection::disconnectFromPeer 不会删除无效连接
【讨论】:
以上是关于服务器重新启动后重新连接到 QDBus 服务器 (Qt C++)的主要内容,如果未能解决你的问题,请参考以下文章
Socket.io 客户端在突然断开连接后无法重新连接到服务器
聊天应用程序:成功重新连接到 WebSocket 服务器后该怎么办?