python类库31[XML RPC实例]

 

一 远程过程调用RPC 

XML-RPC is a Remote Procedure Call method that uses XML passed via HTTP as a transport. With it, a client can call methods with parameters on a remote server (the server is named by a URI) and get back structured data. This module supports writing XML-RPC client code; it handles all the details of translating between conformable Python objects and XML on the wire.

 

简单地,client可以调用server上提供的方法,然后得到执行的结果。类似与webservice。

 

推荐查看xmlprc的源文件:C:\Python31\Lib\xmlrpc

 

二 实例

1) Server


from  xmlrpc.server  import  SimpleXMLRPCServer
from  xmlrpc.server  import  SimpleXMLRPCRequestHandler

def  div(x,y):
    
return  x  -  y
    
class  Math:
    
def  _listMethods(self):
        
#  this method must be present for system.listMethods
         #  to work
         return  [ ' add ' ' pow ' ]
    
def  _methodHelp(self, method):
        
#  this method must be present for system.methodHelp
         #  to work
         if  method  ==   ' add ' :
            
return   " add(2,3) => 5 "
        
elif  method  ==   ' pow ' :
            
return   " pow(x, y[, z]) => number "
        
else :
            
#  By convention, return empty
             #  string if no help is available
             return   ""
    
def  _dispatch(self, method, params):
        
if  method  ==   ' pow ' :
            
return  pow( * params)
        
elif  method  ==   ' add ' :
            
return  params[0]  +  params[ 1 ]
        
else :
            
raise   ' bad method '

server 
=  SimpleXMLRPCServer(( " localhost " 8000 ))
server.register_introspection_functions()
server.register_function(div,
" div " )
server.register_function(
lambda  x,y: x * y,  ' multiply ' )
server.register_instance(Math())
server.serve_forever()

 

 

2)client


import  xmlrpc.client

=  xmlrpc.client.ServerProxy( ' http://localhost:8000 ' )

print (s.system.listMethods())

print (s.pow( 2 , 3 ))   #  Returns 28
print (s.add( 2 , 3 ))   #  Returns 5
print (s.div( 3 , 2 ))   #  Returns 1
print (s.multiply( 4 , 5 ))  #  Returns 20

 

 

3)result

python类库31[XML RPC实例]

 

完!

你可能感兴趣的:(python)