Я могу запустить свой тест 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). Это не что я делаю, я ищу «прямую связь».
Демон Session Bus обычно слушает сокет Unix /var/run/dbus/system_bus_socket
( Проверьте свои /usr/local/etc/dbus-1/session.conf
config), что означает, что вы не можете получить к нему доступ через tcp. Запустите переадресацию портов на компьютере, на котором запущен демон шины (используя socat
например) или настройте его на прослушивание tcp.
Других решений пока нет …