@modelnine: Hmmm, sollte auch unter Win funktionieren, aber trotzdem Danke.
Unter Windows machst Du einfach richtige TCP-Sockets draus:
Code: Alles auswählen
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind(("127.0.0.1",9999))
für den Server und für den Client:
Code: Alles auswählen
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("127.0.0.1",9999))
was natürlich auch unter Unix geht. Nur würde man wenn man rein für Unix entwickelt im Normalfall immer Unix-Domain-Sockets wählen, weil die
nur lokal für die Maschine sind, Rechte über das normale Unix-Rechtesystem erben (also man braucht rw um den Socket benutzen zu können), und noch ein bissel mehr können als TCP/IP, wie zum Beispiel den entfernten Prozess authentifizieren (also welche pid, uid + gid er hat, was teilweise ziemlich wichtig ist), und auch Dateideskriptoren austauschen über den Socket.
Ziemlich geile Sachen sind damit möglich, wie zum Beispiel eine Farm von Serverprozessen wo ein Master Sockets annimmt, und dann eben jenen anderen (laufenden) Server-Prozess mit einem Client verbindet indem einfach der Socket-Deskriptor (auch ein File-Deskriptor) über den Unix-Domain-Socket weitergegeben wird an den entsprechenden Server-Client-Prozess. Damit spart man sich zum Beispiel die Startup-Zeit eines Prozesses für einen ForkingTCPServer.
Damit Python diese Funktionalität hat muß man ein Patch einspielen, was man sich aber aus meinem Subversion-Repo besorgen kann (ich hab das ganze als Erweiterung direkt im socket-Modul implementiert, man muß also Python neu bauen. Die Python-Entwickler haben das ganze aber noch nicht in Python direkt eingebaut, so wie's ausschaut wird das auch nicht werden, leider...).
--- Heiko.