您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python XML RPC服务器端和客户端实例

5b51 2022/1/14 8:17:48 python 字数 4479 阅读 335 来源 www.jb51.cc/python

一、远程过程调用RPC XML-RPCisaRemoteProcedureCallmethodthatusesXMLpassedviaHTTPasatransport.Withit,aclientcancallmethodswithparametersonaremoteserver(theserverisnamedbyaURI)andgetbackstructureddata.Th

概述

一、远程过程调用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

s = 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 XML RPC服务器端和客户端实例全部内容,希望文章能够帮你解决Python XML RPC服务器端和客户端实例所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶