>  기사  >  백엔드 개발  >  XML 라이브러리를 사용하여 RPC 통신 기능을 구현하는 방법을 가르칩니다.

XML 라이브러리를 사용하여 RPC 통신 기능을 구현하는 방법을 가르칩니다.

怪我咯
怪我咯원래의
2017-06-23 14:32:451165검색

1. 결론부터 시작하겠습니다. xml-rpc 메커니즘을 사용하면 서버 간 RPC 호출을 쉽게 구현할 수 있습니다.

2. 테스트 결과는 다음과 같습니다.

3. 소스 코드는 다음과 같습니다.

서버 소스 코드는 다음과 같습니다.

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()

클라이언트 코드는 다음과 같습니다. 다음과 같습니다:

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()

위 내용은 XML 라이브러리를 사용하여 RPC 통신 기능을 구현하는 방법을 가르칩니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.