1. Permettez-moi de commencer par la conclusion : l'utilisation du mécanisme xml-rpc peut facilement implémenter des appels RPC entre serveurs.
2. Les résultats du test sont les suivants :
3. >Le code source côté serveur est le suivant :
import operator, math from SimpleXMLRPCServer import SimpleXMLRPCServer from functools import reduce def main(): server = SimpleXMLRPCServer(('127.0.0.1', 7001)) server.register_introspection_functions() server.register_multicall_functions() server.register_function(addtogether) server.register_function(quadratic) server.register_function(remote_repr) print("Server ready") server.serve_forever() def addtogether(*things): """Add together everything in the list things .""" return reduce(operator.add, things) def quadratic(a, b, c): """Determine x values satisfying: a * x * x + b * x + c = 0""" b24ac = math.sqrt(b*b - 4.0*a*c) return list(set([(-b-b24ac) / 2.0*a, (-b+b24ac) / 2.0*a])) def remote_repr(arg): """return the repr() rendering of the supplied arg """ return arg if __name__ == '__main__': main()
Le code client est le suivant :
import xmlrpclib def main(): proxy = xmlrpclib.ServerProxy('http://127.0.0.1:7001') print("Here are the functions supported by this server:") print("next calculator addtogether: ") print(proxy.addtogether('x','y','z')) print(proxy.addtogether('x','y','z')) print(proxy.addtogether('x','y','z')) print(proxy.addtogether('x','y','z')) for method_name in proxy.system.listMethods(): if method_name.startswith('system.'): continue signatures = proxy.system.methodSignature(method_name) if isinstance(signatures, list) and signatures: for signature in signatures: print('%s(%s)' %(method_name, signature)) else: print('%s(...)' %(method_name,)) method_help = proxy.system.methodHelp(method_name) #if method_help: # print(' ', methodHelp) print(proxy.addtogether('x','y','z')) print("addtogether result ") if __name__ == '__main__': main()
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!