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

作者:junjie 时间:2022-07-26 05:41:57 

一、远程过程调用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,服务器端,客户端
0
投稿

猜你喜欢

  • Python编程实现数学运算求一元二次方程的实根算法示例

    2023-08-08 05:38:40
  • MySQL过滤数据操作方法梳理

    2024-01-24 23:55:55
  • python实现桌面气泡提示功能

    2023-07-13 06:37:13
  • 高性能网站建设指南:性能提升的14个原则

    2011-07-14 16:04:54
  • Docker安装MySQL8.0的实现方法

    2024-01-23 06:52:06
  • python 如何把classification_report输出到csv文件

    2023-01-31 21:02:02
  • 教你使用Sublime text3搭建Python开发环境及常用插件安装另分享Sublime text3最新激活注册码

    2023-08-29 12:08:18
  • python中leastsq函数的使用方法

    2023-11-11 06:03:28
  • python命令行参数解析OptionParser类用法实例

    2022-06-21 17:57:24
  • python批量处理txt文件的实例代码

    2023-05-26 07:00:33
  • Python数据分析 Pandas Series对象操作

    2021-07-17 20:18:52
  • 解析:快速的掌握 MySQL支持的操作系统

    2008-12-31 17:18:00
  • python如何读取bin文件并下发串口

    2021-12-21 17:09:21
  • python爬虫容易学吗

    2023-08-24 09:48:26
  • Python中的测试模块unittest和doctest的使用教程

    2021-09-07 05:50:54
  • python分析网页上所有超链接的方法

    2021-03-15 05:28:08
  • 原生js实现对Ajax的封装(仿jquery)

    2024-04-22 12:57:06
  • Sun正式发布MySQL 5.1版 简化数据库应用

    2008-12-11 15:15:00
  • 微信小程序实现上传图片功能

    2024-05-02 17:29:03
  • Jenkins使用publish html report插件展示HTML报告的方法

    2022-03-31 19:30:54
  • asp之家 网络编程 m.aspxhome.com