linux — повторное подключение к серверу QDBus после перезапуска сервера (Qt C ++)

Я тестирую использование DBus для межпроцессного взаимодействия для проекта QT C ++ (Linux).

Я не использую демона шины, и я использую пути / сокеты Unix.

После моего путешествия по таинственному миру, который является QT DBUS, все, казалось, шло хорошо, пока я не захотел проверить надежность одного из моих интерфейсов.

После завершения процесса сервера и перезапуска соединения истекает время ожидания. Я очищаю объекты соединения (на стороне клиента) и пытаюсь повторно подключиться к серверу.

Кажется, клиент не может восстановить соединение, и я получаю следующие ошибки:
errName: org.freedesktop.DBus.Error.NoServer
errMesage: не удалось подключиться к сокету / tmp / abcd: соединение отклонено

Я пробовал:
— QDBusConnection :: disconnectFromPeer (адрес);
— очистка всех связанных объектов, поэтому никаких ссылок на соединение не существует.

Когда я перезагружаю клиента, у него нет проблем с подключением к (перезапущенному) серверу.

2

Решение

Проблема найдена!
Кажется, это ошибка в Qt 4.8.x:
https://bugreports.qt.io/browse/QTBUG-27973
https://codereview.qt-project.org/#/c/60709/

QDBusConnection :: disconnectFromBus и QDBusConnection :: disconnectFromPeer не удаляет недопустимое соединение

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]