Hallo,
Kann man mit Python mit ein anderes Python Programm auf einen anderen PC kommunizieren. Allerdings weiß ich nicht wonach ich suchen soll.
Am besten auch noch ein Tutorial.
Danke schonmal im Vorraus.
Kommunizieren
Hier ein paar Möglichkeiten:
- xmlrpc (in der stdlib)
Anleitung gibt es hier: http://openbook.galileocomputing.de/pyt ... 20_007.htm
(Normalerweise ist das openbook nichts, aber dieses Kapitel macht eigentlich einen ganz guten Eindruck)
- Pyro http://pyro.sourceforge.net/
Sehr einfach zu bedienen, kann ich nur empfehlen! Mein Favorit.
- dann gibt es noch mächtige Komponenten wie SOAP oder CORBA, aber für simple Anwendungen ist das dann mit Kanonen auf Spatzen...
- dann gibt es natürlich auch noch Sockets, aber ich würde auf eines der ersten beiden setzen
- xmlrpc (in der stdlib)
Anleitung gibt es hier: http://openbook.galileocomputing.de/pyt ... 20_007.htm
(Normalerweise ist das openbook nichts, aber dieses Kapitel macht eigentlich einen ganz guten Eindruck)
- Pyro http://pyro.sourceforge.net/
Sehr einfach zu bedienen, kann ich nur empfehlen! Mein Favorit.
- dann gibt es noch mächtige Komponenten wie SOAP oder CORBA, aber für simple Anwendungen ist das dann mit Kanonen auf Spatzen...
- dann gibt es natürlich auch noch Sockets, aber ich würde auf eines der ersten beiden setzen
Hallo,
Danke ich habe mich für das erste entschieden.
So jetzt habe ich mal ein Beispiel davon genommen kappiert und jetzt kommt ein Fehler
Fehler:
Danke ich habe mich für das erste entschieden.
So jetzt habe ich mal ein Beispiel davon genommen kappiert und jetzt kommt ein Fehler
Code: Alles auswählen
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(("", 50000))
s.listen(1)
try:
while True:
komm, addr = s.accept()
while True:
data = komm.recv(1024)
if not data:
komm.close()
break
print "[%s] %s" % (addr[0], data)
nachricht = raw_input("Antwort: ")
komm.send(nachricht)
finally:
s.close()
Ich hab zwar den Fehler verstanden allerdings verwende ich es nicht doppelt.Traceback (most recent call last):
File "C:\Users\cheffe\server\server.py", line 4, in <module>
s.bind(("", 50000))
File "<string>", line 1, in bind
socket.error: [Errno 10048] Normalerweise darf jede Socketadresse (Protokoll, Netzwerkadresse oder Anschluss) nur jeweils einmal verwendet werden
Hallo.
Startetst du das Programm zweimal auf dem selben PC, dann sagt die Fehlermeldung eigentlich alles. Und warum ist die Meldung auf deutsch, was für eine Python-Version verwendest du?
Es fehlt dir übrigens der Client (oder du hast ihn nur nicht gepostet). Wenn du auf beiden PCs dieses Programm startest, dann warten beide auf eine einkommende Verbindung.
Sebastian
Startetst du das Programm zweimal auf dem selben PC, dann sagt die Fehlermeldung eigentlich alles. Und warum ist die Meldung auf deutsch, was für eine Python-Version verwendest du?
Es fehlt dir übrigens der Client (oder du hast ihn nur nicht gepostet). Wenn du auf beiden PCs dieses Programm startest, dann warten beide auf eine einkommende Verbindung.
Sebastian
Das Leben ist wie ein Tennisball.
Hier noch mal die Empfehlung *keine* Sockets einzusetzen. Das war nicht mein erster Vorschlag. Mein erster Vorschlag war XML-RPC. Du musst bei dem Link eventuell noch das entsprechende Kapitel öffnen.coolerj hat geschrieben:Danke,
Aber ich hatte es selber noch hin bekommen ich hatte ein Programm anlaufen was denn Port benutzte.
Jetzt habe ich aber ein anderes Problem der Server soll nicht abstürzen wenn sich ein Partner ausloggt.
Das ist zwar nicht nachvollziehbar, aber wenn du dir das antun möchtest.coolerj hat geschrieben:Das will ich ja.
Das steht ganz oben in der Dokumentation zum [mod]socket[/mod]-Modul.coolerj hat geschrieben:Andere Frage wie kann ich ein bestimmten Fehler Code ignorieren und stattdessen was anderes machen.
Das Leben ist wie ein Tennisball.
@coolerj: Was kapierst Du denn nicht? Das ist eine Ausnahme. Die kann man behandeln, wie jede andere Ausnahme auch.
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
Vor allem weil du noch ein ziemlicher Neuling zu sein scheinst, und es damit nicht nur dir, sondern momentan auch uns sehr schwer machstHyperion hat geschrieben:Hast Du uns eigentlisch schon mal erklärt, wieso Du mit Sockets arbeiten willst? (Du schriebst ja nur, dass Du Dir jede Menge Probleme einhandeln willst - aber wieso nur?)
Für Programmierer mit wenig Python-Erfahrung empfiehlt es sich sehr, auf eine Lösung zu setzen, die das ganze Sockethandling abstrahiert.
@coolerj: `socket.error` hat als `args`-Attribut ein Tupel das als erstes Element die Fehlernummer und als zweites den Text enthält.
Allerdings sind beide Betriebssystemabhängig.
Allerdings sind beide Betriebssystemabhängig.