Seite 2 von 2
Verfasst: Samstag 30. Januar 2010, 14:38
von maxi_king_333
Hi,
Und was ist das Problem mit dem Netzwerk?
Es werden Ports blockiert...
Viele Grüße
Maxi
Verfasst: Samstag 30. Januar 2010, 14:52
von Leonidas
Auch lokale Ports? Das scheint mir höchst unüblich.
Verfasst: Samstag 30. Januar 2010, 14:57
von maxi_king_333
Hi,
was meinst Du mit Lokalen Ports?
Naja, jedenfalls schon im ersten Beispiel:
Code: Alles auswählen
server = SimpleXMLRPCServer(("localhost", 8000))
print "Listening on port 8000..."
Das ist doch eindeutig, stellt Euch mal vor, das machen alle und dann möchte man 2 Programme ausführen und die benutzten beide den gleichen Port, viel Spaß...
Deshalb, da biege ich lieber irgendetwas unsauberes zusammen bevor ich eine Kommunikation übers Netzt aufbaue.
Aber wie schon gesagt, werde das mit dem gtk_main() als Hauptschleife eines Prozesses mal ausprobieren.
Viele Grüße
Maxi
Verfasst: Samstag 30. Januar 2010, 15:10
von Leonidas
Du kannst ja einen zufälligen Port wählen...
Verfasst: Samstag 30. Januar 2010, 15:14
von maxi_king_333
Hi,
ja schon, aber das ändert nichts, vielleicht erwische ich einen Port, der trotzdem schon benutzt wird.
Und selbst wenn es nicht so wäre, dann braucht mein GUI ja auch noch eine Überwachungsfunktion, die dann wieder in einem Prozess oder Thread laufen muss und dann wird das GUI ja nicht mehr aus dem Hauptthread bzw. Prozess in dem gtk_main() läuft verändert und es geht wieder nicht.
Viele Grüße
Maxi
Verfasst: Samstag 30. Januar 2010, 15:34
von jbs
Code: Alles auswählen
In [19]: from socket import socket
In [20]: s = socket()
In [21]: s.bind(("localhost", 0))
In [22]: s.getsockname()
Out[22]: ('127.0.0.1', 63786)
Ein freier Port, nur für dich.
Verfasst: Samstag 30. Januar 2010, 15:38
von Trundle
Und PyGtk bietet auch Funktionen an, dass man Sockets in der Eventschleife von PyGtk überwachen kann. Und Netzwerkbibliotheken wie etwa Twisted bieten auch Möglichkeiten, dass sie das benutzen.
Verfasst: Samstag 30. Januar 2010, 15:39
von maxi_king_333
Danke - gut zu wissen...
//Edit:
Und PyGtk bietet auch Funktionen an, dass man Sockets in der Eventschleife von PyGtk überwachen kann. Und Netzwerkbibliotheken wie etwa Twisted kommen bieten auch Möglichkeiten, dass sie das benutzen.
Dann brauche ich aber wieder eine externe Bibliothek.
Muss jetzt erstmal schauen, was ich mache (so viele Möglichkeiten)...
Verfasst: Samstag 30. Januar 2010, 16:01
von Trundle
Es ist ja nicht so, dass man diese externen Bibliotheken einfach nur willkürlich benutzt und empfiehlt, sondern weil sie das Leben erleichtern sollen. Sicher, man braucht sie nicht, man kann das auch alles selber machen. Nur wozu? Letztlich schreibt man doch nur bestehendes neu und das oftmals in schlechter. Lowlevel-Netzwerkcode macht wirklich nicht sehr viel Spaß, vor allem, wenn man es richtig machen will. Denn gerade, wenn man dann noch mit Unterprozesen arbeitet, muss man eben mit solchen spaßigen Dingen wie unterbrochenen Syscall rechnen ("EINTR") und darum mag man sich einfach nicht selber kümmern.
Verfasst: Samstag 30. Januar 2010, 16:13
von maxi_king_333
Hi,
Nur wozu?
Weil man ein Gerät benutzt, bei dem eben nur Python, ohne Bibliotheken drauf ist.
Das Programm soll ja schließlich auch auf meinem iPod laufen, das jetzige Programm ohne GUI tut es ja auch.
Auf dem iPod soll es später auch mit GUI laufen und da habe ich so eine Bibliothek nicht. Ich habe zwar auch kein PyGTK aber dafür eine iPod interne Bibliothek die ich ansteuern kann.
Viele Grüße
Maxi
Lösung gefunden
Verfasst: Sonntag 31. Januar 2010, 12:18
von maxi_king_333
Hi,
habe eine für mich akzeptable Lösung gefunden.
An diesem Code habe ich mich orientiert:
http://haltcondition.net/?p=2319
Viele Grüße
Maxi[/code]