Я написал простую программу на Python для воспроизведения и приостановки музыкального проигрывателя банши. Пока он работает на моей собственной машине, у меня возникают проблемы с удаленным компьютером, подключенным к тому же маршрутизатору (LAN). Я отредактировал session.conf удаленной машины, чтобы добавить эту строку:
<listen>tcp:host=localhost,port=12434</listen>
и вот моя программа:
import dbus
bus_obj=dbus.bus.BusConnection("tcp:host=localhost,port=12434")
proxy_object=bus_obj.get_object('org.bansheeproject.Banshee',
'/org/bansheeproject/Banshee/PlayerEngine')
playerengine_iface=dbus.Interface(proxy_object,
dbus_interface='org.bansheeproject.Banshee.PlayerEngine')
var=0
while (var!="3"):
var=raw_input("\nPress\n1 to play\n2 to pause\n3 to exit\n")
if var=="1":
print "playing..."
playerengine_iface.Play()
elif var=="2":
print "pausing"
playerengine_iface.Pause()
Вот что я получаю, когда пытаюсь ее выполнить
Traceback (most recent call last):
File "dbus3.py", line 4, in <module>
bus_obj=dbus.bus.BusConnection("tcp:host=localhost,port=12434")
File "/usr/lib/python2.7/dist-packages/dbus/bus.py", line 125, in __new__
bus = cls._new_for_bus(address_or_type, mainloop=mainloop)
dbus.exceptions.DBusException: org.freedesktop.DBus.Error.NoServer: Failed to connect to socket "localhost:12434" Connection refused
Что я здесь делаю неправильно? я должен отредактировать /usr/lib/python2.7/dist-packages/dbus/bus.py
UPDATE:
хорошо, вот сделка когда я добавляю
<listen>tcp:host=192.168.1.7,port=12434</listen>
в /etc/dbus-1/session.conf, затем перезагружаюсь, надеясь, что он начнет слушать при перезагрузке, Никогда не загружается. Он зависает на экране загрузки, и иногда мигает черный экран со следующим текстом :
Pulseaudio Configured For Per-user Sessions Saned Disabled;edit/etc/default/saned
, поэтому, когда я нажимаю ctrl+alt+f1, изменяю session.conf в исходное состояние и перезагружаюсь, он загружается правильно.
О чем все это? Как я могу заставить демон dbus прослушивать tcp-соединения, не сталкиваясь с проблемами?