2013-10-02 1 views
1

я могу запустить мой тест Qt DBus путем подключения к шине сессии:Подключение к сессии 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). Это не что я хочу, я ищу «прямое соединение».

ответ

1

Десмонд шины сеанса обычно прослушивает сокет unix /var/run/dbus/system_bus_socket (проверьте конфигурацию /usr/local/etc/dbus-1/session.conf), что означает, что вы не можете получить к нему доступ дистанционно через tcp. Запустите какую-то переадресацию портов на компьютере, где работает демон шины (например, с помощью socat) или настройте его для прослушивания tcp.

+0

Значит, я могу подключить шину сеанса через TCP, если он настроен на прослушивание tcp. Надо попробовать. –

+1

Я предлагаю запустить простой сервис, который прослушивает tcp и подключается к системной шине вместо реконфигурации демона dbus –