Seite 1 von 1

xmlrpc

Verfasst: Donnerstag 13. August 2009, 21:11
von Danipol
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

Verfasst: Freitag 14. August 2009, 07:54
von lutz.horn
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.

re

Verfasst: Freitag 14. August 2009, 21:32
von Danipol
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?

Verfasst: Freitag 14. August 2009, 22:25
von lunar
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.

re

Verfasst: Freitag 14. August 2009, 23:56
von Danipol
î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..

Re: re

Verfasst: Samstag 15. August 2009, 08:21
von cofi
Danipol hat geschrieben:îch dachte der Port muss kleiner als 1024 sein...
Nein. Das zeigt doch auch schon dein 4000er Port oben. Ports unter 1024 sind meist reserviert.
Unter Unixen gibts eine mehr oder weniger vollstaendige Aufzaehlung unter ``/etc/services``
Danipol hat geschrieben:wie muss der Pfad für den client heißen, wenn das Script auf "www.fun.de/test/serverXMLRPC.py" liegt?
"www.fun.de:4000/test/serverXMLRPC.py" falls es immernoch der 4000er port ist.
Danipol hat geschrieben:Und muss es im Schript immernoch localhost heißen, wenn ich den Server starten möchte?
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: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..
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.

re

Verfasst: Montag 17. August 2009, 17:19
von Danipol
Also, ich habe das Script jetzt auf dem Server hochgeladen.

Wenn ich den Server in Firefox aufrufe, dann gibt es einen Internal Server Error!

Wie starte ich den Server denn, wenn er hochgeladen ist?

re

Verfasst: Montag 17. August 2009, 17:22
von Danipol
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

Re: re

Verfasst: Montag 17. August 2009, 17:38
von Hyperion
Danipol hat geschrieben:Also, ich habe das Script jetzt auf dem Server hochgeladen.
Was ist denn das für ein Server?
Wenn ich den Server in Firefox aufrufe, dann gibt es einen Internal Server Error!
Wie rufst Du den denn auf?
Wie starte ich den Server denn, wenn er hochgeladen ist?
Wenn Du ihn bereits aufrufst, sollte er doch laufen? :twisted:

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 ...

re

Verfasst: Montag 17. August 2009, 18:43
von Danipol
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.

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)
Auf dem Server ist Python installiert.

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()
Also, was ist ein root-Server?

Verfasst: Montag 17. August 2009, 20:06
von lunar
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.

re

Verfasst: Montag 17. August 2009, 20:08
von Danipol
Das ist mir klar. Aber ich finde einfach keine Dokumentation.

Verfasst: Dienstag 18. August 2009, 18:09
von Leonidas
Dann starte mit Wikipedia, Themen: TCP/IP, Server, Client, Port, Webbrowser, DNS.

re

Verfasst: Dienstag 18. August 2009, 23:11
von Danipol
Werde ich machen. Entschuldigung, dass ich so unaufgeklärt diese Frage gestellt habe.