Hallo liebes Forum,
ich möchte gerne ein Programm umsetzen und weis aber noch nicht wie. Ich bräuchte nur einen Tipp mit was man das am besten machen könnte.
PC1
auf PC1 läuft ein Normales Python Skript in einem DOS Fenster. Dieses Skript Arbeitet eine Liste ab. Das Skript gibt den Status des Programms aus ca 100 mal pro sek.
PC2
mit diesem PC will ich nun den gleichen Status sehen wie auf PC1. so eine art remote desktop. im grunde würd es reichen wenn ich mein skript auf PC1 anfunken könnte und mir die Daten übergeben werden.
Hat jemand eine Idee wie man das am besten machen kann?
Danke!
Python Kommunikation zwischen 2 PC's
ich hab das nun mal getestet das is schon nicht so schlecht das ich da gefunden hab,
http://code.activestate.com/recipes/81549/
für all die die da auch intresse haben
http://code.activestate.com/recipes/81549/
für all die die da auch intresse haben
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo alpha!alpha hat geschrieben:mir ist nicht ganz klar wieso man dafür XML-RPC braucht. Mach doch einfach ne Socketkommunikation auf und schick die Strings da drüber. Dürfte auch viel schneller sein.
Natürlich ist eine reine Socketkommunikation schneller. Aber dafür musst du dir **alles** selber programmieren. Für XMLRPC gibt es in Python Highlevel-Module, die sich um alles kümmern. Du kannst über XMLRPC direkt Funktionen des Servers aufrufen. Der Client wartet, bis die Funktion am Server abgearbeitet wurde und empfängt das Ergebnis. Und das mit nur wenigen Codezeilen, und ohne dass du wissen musst, wie das übertragen wird. Usw.
XMLRPC ist highlevel. Socket ist lowlevel. Es gibt keinen Grund, alles selber zu programmieren, wenn nur mal ein paar Daten übertragen werden müssen. Wenn es nicht auf Geschwindigkeit ankommt.
Kleines XMLRPC-Beispiel: http://www.python-forum.de/topic-5478.html
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
ich hab mir das inzwischen ein wenig angschaut und ich glaub das socket das richtige für mich ist. ich möcht ja eine funktion in python starten und am client das ergebniss sehen.
eine frage noch, wenn ich mich weg connecte vom server, bleibt dann auch der prozess stehen? und wenn ich michzurück connecte, sehe ich diesen dann wieder?
eine frage noch, wenn ich mich weg connecte vom server, bleibt dann auch der prozess stehen? und wenn ich michzurück connecte, sehe ich diesen dann wieder?
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Ja und wieso spricht das dann gegen xml-rpc?bcit6k hat geschrieben:ich hab mir das inzwischen ein wenig angschaut und ich glaub das socket das richtige für mich ist. ich möcht ja eine funktion in python starten und am client das ergebniss sehen.
Das musst Du dann selber implementieren. (Was genau meinst Du mit "prozess"?)eine frage noch, wenn ich mich weg connecte vom server, bleibt dann auch der prozess stehen? und wenn ich michzurück connecte, sehe ich diesen dann wieder?
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
An dieser Stelle möchte ich erwähnen das RPC ausgeschrieben "Remote Procedure Call" ist und genau dafür da ist, um "Funktionen aufzurufen".
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
normalerweise rufe ich auf einem pc ein pythin skript auf das mehrere stunden (tage) läuft. ich gebe mir den akzuellen status immer mit print aus. so weit ist das ja ganz ok. nur wenn ich sehen will wie weit das skript ist muss ich mich erst per remote auf den jeweiligen pc einklinken und nachschaun.
besser währe es wenn ich mich nur mit python verbinden kann und die aktuellen statusmeldungen des skripts zurück bekomme
so was schwebt mir vor
besser währe es wenn ich mich nur mit python verbinden kann und die aktuellen statusmeldungen des skripts zurück bekomme
so was schwebt mir vor
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Dann lasse dir doch die Ergegnisse zumailen? Oder erstelle eine Webseite, und lasse sie Dir dann ausliefern.bcit6k hat geschrieben:normalerweise rufe ich auf einem pc ein pythin skript auf das mehrere stunden (tage) läuft. ich gebe mir den akzuellen status immer mit print aus. so weit ist das ja ganz ok. nur wenn ich sehen will wie weit das skript ist muss ich mich erst per remote auf den jeweiligen pc einklinken und nachschaun.
Ja aber genau das kannst Du doch per rpc-xml auch tun! Wo ist da der Vorteil von low-Level socket-Programmierung? Natürlich brauchst Du eine Strategie, wie Du die Kommunikation zwischen Server und dem lange laufenden Script realisierst - aber das muss man sowieso klären (außer bei den oben genannten Alternativen!)besser währe es wenn ich mich nur mit python verbinden kann und die aktuellen statusmeldungen des skripts zurück bekomme
@Gerold:
So wie ich bcit6k verstanden habe möchte er das was er mit print("irgendwas") auf der Konsole ausgibt mit auf nen anderen PC schicken.
Das liese sich ja schon fast mit dem in der Python Dokumentation vorhandenen Beispiel erschlagen. Zumal so wie ich es verstanden habe nur um einen Client handelt der sich auf den Server verbindet.
Ich würde das schematisch so machen.
Socketserver in bestehendes Programm einbinden (das bis jetzt den Status auf dem schirm ausgibt)
mit socketclient auf socketserver verbinden
Wenn Server Verbindung erkennt über
connection.send("teststring") - Methode Ausgaben an Client schicken
Hoffe ich habs richtig verstanden.
Grüße
alpha
So wie ich bcit6k verstanden habe möchte er das was er mit print("irgendwas") auf der Konsole ausgibt mit auf nen anderen PC schicken.
Das liese sich ja schon fast mit dem in der Python Dokumentation vorhandenen Beispiel erschlagen. Zumal so wie ich es verstanden habe nur um einen Client handelt der sich auf den Server verbindet.
Ich würde das schematisch so machen.
Socketserver in bestehendes Programm einbinden (das bis jetzt den Status auf dem schirm ausgibt)
mit socketclient auf socketserver verbinden
Wenn Server Verbindung erkennt über
connection.send("teststring") - Methode Ausgaben an Client schicken
Hoffe ich habs richtig verstanden.
Grüße
alpha
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
@bcit6k: Windows oder Linux?
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
jetzt hab ich doch noch eine frage.
mir ist jetzt so weit klar das der server ,wenn der client connectedist ihm auch die ausgabe zusendet. aber bei mir wartet der server immer bis sich ein client verbindet, ich möchte das er einfach sendet ohne darauf zu warten das sich ein client connected, aber wie des weis ich nicht
mir ist jetzt so weit klar das der server ,wenn der client connectedist ihm auch die ausgabe zusendet. aber bei mir wartet der server immer bis sich ein client verbindet, ich möchte das er einfach sendet ohne darauf zu warten das sich ein client connected, aber wie des weis ich nicht
- Rebecca
- User
- Beiträge: 1662
- Registriert: Freitag 3. Februar 2006, 12:28
- Wohnort: DN, Heimat: HB
- Kontaktdaten:
An wen soll der Server was senden wenn kein Client verbunden ist? Das geht nicht, egal ob nun XML-RPC oder low level sockets.
Offizielles Python-Tutorial (Deutsche Version)
Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Du hast jetzt wohl sowas:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
und Dein Server kommt über das listen nicht hinaus. Da mußt die wohl
den Kommunikationsteil in einen eigenen Thread packen. Schau dir mal das
Modul "threading" an.
Gruß
alpha
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
und Dein Server kommt über das listen nicht hinaus. Da mußt die wohl
den Kommunikationsteil in einen eigenen Thread packen. Schau dir mal das
Modul "threading" an.
Gruß
alpha