Python下的XML-RPC客戶端和服務端實現(基於xmlrpclib SimpleXMLRPCServer 模塊)

RPC是Remote Procedure Call的縮寫,翻譯成中文就是遠程方法調用,是一種在本地的機器上調用遠端機器上的一個過程(方法)的技術,這個過程也被你們稱爲「分佈式計算」,是爲了提升各個分立機器的「互操做性」而發明出來的技術。python

XML-RPC的全稱是XML Remote Procedure Call,即XML遠程方法調用。安全

它是一套容許運行在不一樣操做系統、不一樣環境的程序實現基於Internet過程調用的規範和一系列的實現。
這種遠程過程調用使用http做爲傳輸協議,XML做爲傳送信息的編碼格式。
Xml-Rpc的定義儘量的保持了簡單,但同時可以傳送、處理、返回複雜的數據結構。
Python下的XML-RPC:服務器

一、類庫:xmlrpclib    通常使用在客戶端,這個模塊用來調用註冊在XML-RPC服務器端的函數,xmlrpclib並非一個類型安全的模塊,沒法抵禦惡意構造的數據,這方面的一些處理工做須要交給開發者本身。數據結構

二、類庫:SimpleXMLRPCServer   通常是用在服務器端,這個模塊用來構造一個最基本的XML-RPC服務器框架框架

三、構造一個基本的XML-RPC Server並啓動:D:\Program Files\eclipse-workspace\HessianPro\basicXmlRPC\XmlRPCserver.pyeclipse

#!/usr/bin/python
# -*- coding:UTF-8 -*-


from  SimpleXMLRPCServer import SimpleXMLRPCServer
from SimpleXMLRPCServer import SimpleXMLRPCRequestHandler


class XmlRPCserver():
    def datasum(self,x,y):
        print u'加法結果:',x+y
        return x+y
    
    def datadiv(self,x,y):
        print u'除法結果:',x/y
        return x/y
    
    

if __name__ == '__main__':
    rpc_obj=XmlRPCserver()
    
    server=SimpleXMLRPCServer(("localhost", 8000))
    
    server.register_function(rpc_obj.datasum, 'datasum') #註冊函數
    server.register_function(rpc_obj.datadiv,'datadiv')
    
    print "Listening on port 8000..."
    server.serve_forever()# 保持等待調用狀態

  

 

四、構造一個基本的XML-RPC Client:  D:\Program Files\eclipse-workspace\HessianPro\basicXmlRPC\XmlRPCclient.py分佈式

#!/usr/bin/python
# -*- coding:UTF-8 -*-

import xmlrpclib

sp=xmlrpclib.ServerProxy('http://localhost:8000')
print sp.datasum(1,2)
print sp.datadiv(4,2)

 

 

 

相關文章
相關標籤/搜索