Seite 1 von 1

Komisches Verhalten von XML-RPC

Verfasst: Sonntag 17. Oktober 2004, 13:33
von Leonidas
Hallo!
Ich habe folgende zwei Progs:
connectionserver.py

Code: Alles auswählen

#!/usr/bin/env python2.3
import os
from SimpleXMLRPCServer import SimpleXMLRPCServer

def getppp0():
        return 'NotImplemented'

server = SimpleXMLRPCServer(("localhost", 7373))
server.register_function(getppp0)
server.serve_forever()
und sparcclient.py:

Code: Alles auswählen

import xmlrpclib

server = xmlrpclib.Server("http://192.168.123.2:7373/")
print server.getppp0()
Wenn ich nun versuche vom *selben* Rechner darauf zu verbinden, gibt es ein "connection refused", wenn ich von einem anderen Rechner verbinde gibt es "bad xml rpc version" (o.ä.). Wenn ich nur aber im Server statt localhost 192.168.123.2 eingebe, läuft es wunderbar. Kann mir jemand erklären warum dies so ist?

Verfasst: Sonntag 17. Oktober 2004, 15:08
von rayo
Hi

Wenn du den Server auf "localhost" setzt kannst du nicht via lan darauf zugreifen (http://192.168.123.2:7373/).

Also beim Server auf '192.168.123.2' oder '' setzen, dann kannst du im 1.Fall mit 192.168.123.2 zugreifen jedoch nicht mit localhost, beim 2. Fall kannst du entweder mit localhost oder der lanip zugreifen.

Dann sollte das "Connection refused" problem weg sein.

Gruss

Verfasst: Sonntag 17. Oktober 2004, 15:16
von Leonidas
Mhh, man lernt doch immer wieder neues. Danke!

Verfasst: Sonntag 17. Oktober 2004, 17:54
von Dookie
Hi,

die IP von localhost ist 127.0.0.1


Gruß

Dookie

Verfasst: Sonntag 17. Oktober 2004, 18:09
von Leonidas
Ja, das weis ich, aber ich kann von einem anderen Rechner ja schlecht auch 127.0.0.1 zugreifen, wenn dort kein Server läuft. 8)
Noch eine etwas andere Frage: wie beende ich so einen SimpleXMLRPCServer von remote? Ich habe dies gefunden http://aspn.activestate.com/ASPN/Cookbo ... ipe/114579, das geht zwar, lässt aber laut netstat den port im TCP_WAIT Zustand (bis das OS den port wieder freigibt), so dass man nicht sofort auf diesem Port einen neuen Server starten kann, und das ist ja wohl nicht 'clean'. Wie kann ich das richtig machen. Ich glaube, das sollte genauso gehen wie beim SocketServer...