Ich habe eine kurze Frage an das Forum. Kann mir jemand bitte beschreiben, wie ich vorgehen sollte, wenn ich einen xmlrpc-server ins Internet stellen möchte. Welche IPs kann ich benutzen und brauche ich online auch einen Port?
Danke! Danipol
xmlrpc
Die Dokumentation der xmlrpclib findest Du unter http://docs.python.org/library/xmlrpclib.html.
Du kannst alle IP-Adressen und Ports benutzen, die der von Dir verwendete System-User verwenden darf.
Du kannst alle IP-Adressen und Ports benutzen, die der von Dir verwendete System-User verwenden darf.
https://www.xing.com/go/invite/18513630.6a91d4
gut nehmen wir an der Server auf den ich das Script lege heißt
www.fun.de/rechner/
ruft der client das auf? anstatt von: http://localhost:4000 ??
Woher weiß ich welche Ports ich auf meinem Server verwenden darf?
www.fun.de/rechner/
ruft der client das auf? anstatt von: http://localhost:4000 ??
Woher weiß ich welche Ports ich auf meinem Server verwenden darf?
Du darfst prinzipiell alle Ports belegen. Sie müssen halt frei sein (sprich, es dürfen keine Dienste auf den betreffenden Ports laufen). Außerdem brauchst du zumindest unter Unix besondere Privilegien, um Ports kleiner gleich 1024 verwenden zu können.
Die anderen beiden Fragen verstehe ich nicht.
Die anderen beiden Fragen verstehe ich nicht.
îch dachte der Port muss kleiner als 1024 sein...
wie muss der Pfad für den client heißen, wenn das Script auf "www.fun.de/test/serverXMLRPC.py" liegt?
Und muss es im Schript immernoch localhost heißen, wenn ich den Server starten möchte?
Eine weitere Frage: Wie kann ich eine tcp/ip-verbindung über das Internet laufen lassen? Ich habe es schonmal mit den internet-ips versucht, das hat aber nichts geholfen..
wie muss der Pfad für den client heißen, wenn das Script auf "www.fun.de/test/serverXMLRPC.py" liegt?
Und muss es im Schript immernoch localhost heißen, wenn ich den Server starten möchte?
Eine weitere Frage: Wie kann ich eine tcp/ip-verbindung über das Internet laufen lassen? Ich habe es schonmal mit den internet-ips versucht, das hat aber nichts geholfen..
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Nein. Das zeigt doch auch schon dein 4000er Port oben. Ports unter 1024 sind meist reserviert.Danipol hat geschrieben:îch dachte der Port muss kleiner als 1024 sein...
Unter Unixen gibts eine mehr oder weniger vollstaendige Aufzaehlung unter ``/etc/services``
"www.fun.de:4000/test/serverXMLRPC.py" falls es immernoch der 4000er port ist.Danipol hat geschrieben:wie muss der Pfad für den client heißen, wenn das Script auf "www.fun.de/test/serverXMLRPC.py" liegt?
Von wo wird denn gestartet? Ich glaube du musst ein paar Sachen lernen ... DNS ist das Mapping von Name auf IP-Adresse, d.h. Rechner. Dieser Rechner verhaelt sich genauso wie jeder andere Rechner, kann deshalb auch Server auf sich starten -> ``localhost``Danipol hat geschrieben:Und muss es im Schript immernoch localhost heißen, wenn ich den Server starten möchte?
Und die naechste Luecke ... IP ist wie gesagt fuer die Rechner-Identifikation zustaendig. TCP ist die Ebene darueber und kuemmert sich um die Pakete. Jede Verbindung die aufgebaut wird ist entweder TCP oder UDP. Les dich mal in die Materie ein.Danipol hat geschrieben:Eine weitere Frage: Wie kann ich eine tcp/ip-verbindung über das Internet laufen lassen? Ich habe es schonmal mit den internet-ips versucht, das hat aber nichts geholfen..
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
Fehlermeldung:
Code: Alles auswählen
Traceback (most recent call last):
File "C:\Users\Daniel\Desktop\stf\web\clientXML.py", line 7, in <module>
print server.download()
File "C:\Python26\lib\xmlrpclib.py", line 1199, in __call__
return self.__send(self.__name, args)
File "C:\Python26\lib\xmlrpclib.py", line 1489, in __request
verbose=self.__verbose
File "C:\Python26\lib\xmlrpclib.py", line 1235, in request
self.send_content(h, request_body)
File "C:\Python26\lib\xmlrpclib.py", line 1349, in send_content
connection.endheaders()
File "C:\Python26\lib\httplib.py", line 868, in endheaders
self._send_output()
File "C:\Python26\lib\httplib.py", line 740, in _send_output
self.send(msg)
File "C:\Python26\lib\httplib.py", line 699, in send
self.connect()
File "C:\Python26\lib\httplib.py", line 683, in connect
self.timeout)
File "C:\Python26\lib\socket.py", line 512, in create_connection
raise error, msg
error: [Errno 10061] Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Was ist denn das für ein Server?Danipol hat geschrieben:Also, ich habe das Script jetzt auf dem Server hochgeladen.
Wie rufst Du den denn auf?Wenn ich den Server in Firefox aufrufe, dann gibt es einen Internal Server Error!
Wenn Du ihn bereits aufrufst, sollte er doch laufen?Wie starte ich den Server denn, wenn er hochgeladen ist?

Naja, "python meinServer.py" z.B. ... besser natürlich mit einem entsprechendem Daemon-Wrapper-Script.
Hast Du überhaupt einen root-Server? Wenn nein, wirst Du wohl kaum einen Server-prozess initiieren können ...
Könntest du mir weiterhelfen mit einem Tutorial oder ähnlichem?
Der Pfad für das Serverscript: http://www.hum-bug.de/flash/serverXML.py
In meinem Client siehts folgendermaßen aus.
Auf dem Server ist Python installiert.
Das Serverscript sieht so aus:
Also, was ist ein root-Server?
Der Pfad für das Serverscript: http://www.hum-bug.de/flash/serverXML.py
In meinem Client siehts folgendermaßen aus.
Code: Alles auswählen
import xmlrpclib
import time
server=xmlrpclib.Server("http://www.hum-bug.de:8000/flash/serverXML.py")
while True:
print server.download()
server.refresh()
time.sleep(.2)
Das Serverscript sieht so aus:
Code: Alles auswählen
import SimpleXMLRPCServer
class MySQL():
def __init__(self):
self._inhalt=""
def add(self, text):
self._inhalt+=text
return True
def show(self):
return self._inhalt
def back_up(self):
inp=open("back_up.txt", "w")
inp.write(self._inhalt)
inp.close()
return True
def load_cache(self):
inp=open("back_up.txt", "r")
line = inp.read()
inp.close()
self._inhalt=line
return True
server = SimpleXMLRPCServer.SimpleXMLRPCServer(("localhost", 8000))
server.register_instance(MySQL())
server.register_function(lambda astr: '_' + astr, '_string')
server.serve_forever()
Ich möchte Dir nicht zu nahetreten, doch wenn Du nicht mal weißt, was ein "Root-Server" ist, und wie Du auf Deinem Server Dienste startest, dann bist Du der Aufgabe, einen Serverdienst zu administrieren, noch nicht gewachsen. Du solltest erstmal in Deinem eigenen Netzwerk oder auf Deinem eigenen Computer lernen, wie sowas funktioniert, bevor Du Dienste der allgemeinen Öffentlichkeit zugänglich machst.