xmlrpc

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Danipol
User
Beiträge: 38
Registriert: Sonntag 1. Februar 2009, 21:08

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
Benutzeravatar
lutz.horn
User
Beiträge: 205
Registriert: Dienstag 8. November 2005, 12:57
Wohnort: Pforzheim

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.
https://www.xing.com/go/invite/18513630.6a91d4
Danipol
User
Beiträge: 38
Registriert: Sonntag 1. Februar 2009, 21:08

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?
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.
Danipol
User
Beiträge: 38
Registriert: Sonntag 1. Februar 2009, 21:08

î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..
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

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.
Danipol
User
Beiträge: 38
Registriert: Sonntag 1. Februar 2009, 21:08

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?
Danipol
User
Beiträge: 38
Registriert: Sonntag 1. Februar 2009, 21:08

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
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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 ...
Danipol
User
Beiträge: 38
Registriert: Sonntag 1. Februar 2009, 21:08

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?
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.
Danipol
User
Beiträge: 38
Registriert: Sonntag 1. Februar 2009, 21:08

Das ist mir klar. Aber ich finde einfach keine Dokumentation.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Dann starte mit Wikipedia, Themen: TCP/IP, Server, Client, Port, Webbrowser, DNS.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Danipol
User
Beiträge: 38
Registriert: Sonntag 1. Februar 2009, 21:08

Werde ich machen. Entschuldigung, dass ich so unaufgeklärt diese Frage gestellt habe.
Antworten