Python网络编程基础笔记-向XML-RPC服务器注册类实例

1.向XML-RPC服务器端注册类实例
               
               
                # -*- coding:cp936 -*-
"""
1.注册内置实例
2.注册自定义实例
"""
import SimpleXMLRPCServer
# 自定义类
class JCAdder:
    def add(self,x,y):
        return x + y
import math
server = SimpleXMLRPCServer.SimpleXMLRPCServer(("localhost",50000))
# 创建自定义类实例
Adder = JCAdder()
# 创建内置类实例
Math = math()
# 注册XML-RPC服务器的实例
server.register_instance(Adder)
server.register_instance(Math)
server.serve_forever()
2.测试内置类实例的客户端程序
# -*- coding: cp936 -*-
"""
XML客户端程序
1.测试注册的内置函数
2.测试自定义函数
"""
import xmlrpclib
server = xmlrpclib.ServerProxy("http://localhost:50000")
# 测试注册的内置类实例
s = server.pow(2,8)
print s
3.测试自定义类实例的客户端程序
# -*- coding: cp936 -*-
"""
XML客户端程序
1.测试注册的内置函数
2.测试自定义函数
3.这个程序是由问题,错误提示XML-RPC服务器不支持add方法
Fault: :method "add" is not supported'
4.在register_instance代码中可以看到如下的语句:
        self.instance = instance
即一个Server只能由一个instance与之对应,前一个会被后一个替换掉,在此程序中,math的实例会替换JCAdd的实例,故XML-RPC服务器上已没有add方法.
5.将math的实例对象注册语句删除或将JCAdd类实例注册放到math实例对象之后.
"""
import xmlrpclib
server = xmlrpclib.ServerProxy("http://localhost:50000")
# 测试注册的内置类实例
# s = server.pow(2,8)
s = server.add(2,8)
print s