Domanda

creo poco SimpleXMLRPCServer per il controllo IP del client.

provo questo:

Server

import xmlrpclib

da SimpleXMLRPCServer import SimpleXMLRPCServer

server = SimpleXMLRPCServer (( "localhost", 8000))

def MyIP ():     return "Il tuo IP è:% s" % server.socket.getpeername ()

server.register_function (MyIP)

server.serve_forever ()

Client

import xmlrpclib

SE = xmlrpclib.Server ( " http: // localhost: 8000 ")

stampa se.MyIp ()

Errore

xmlrpclib.Fault:: (107, 'Trasporti endpoint non è collegato') ">

Come fare client_address visibile a tutte le funzioni?

È stato utile?

Soluzione

Se si desidera ad esempio per passare client_address come primo argomento ad ogni funzione, si potrebbe creare una sottoclasse SimpleXMLRPCRequestHandler (passaggio il vostro sottoclasse come il gestore quando si crea un'istanza di SimpleXMLRPCServer) e sovrascrivere _dispatch (anteporre self.client_address alla tupla params e poi delegare la riposo per SimpleXMLRPCRequestHandler._dispatch). Se questo approccio è OK e si desidera visualizzare il codice, basta chiedere!

Non sono sicuro di come si sarebbe utilizzare in modo sicuro qualsiasi cosa, ma gli argomenti della funzione di "fare client_address visibile" - non c'è client_address come nome nuda, globale o in altro modo, c'è solo l'self.client_address di ogni istanza del gestore di richieste di classe (e hack quali la copia di esso a un variabili globali si sentono davvero schifo davvero - e non sicuri sotto la filettatura, ecc ecc).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top