国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python中實現遠程調用(RPC、RMI)簡單例子

2020-02-23 05:21:35
字體:
來源:轉載
供稿:網友

遠程調用使得調用遠程服務器的對象、方法的方式就和調用本地對象、方法的方式差不多,因為我們通過網絡編程把這些都隱藏起來了。遠程調用是分布式系統的基礎。

遠程調用一般分為兩種,遠程過程調用(RPC)和遠程方法調用(RMI)。

RPC

RPC屬于函數級別的遠程調用,其多是通過HTTP傳輸數據,數據形式有XML、JSON、序列化數據等。在此,用python做一個xml-rpc的示例。 先給服務器端server.py:
代碼如下:
from SimpleXMLRPCServer import SimpleXMLRPCServer  
def add(x, y):
    return x + y   
if __name__ == '__main__':
    s = SimpleXMLRPCServer(('127.0.0.1', 8080))
    s.register_function(add)
    s.serve_forever()
s是一個綁定了本地8080端口的服務器對象,register_function()方法將函數add注冊到s中。serve_forever()啟動服務器。 再給個客戶端client.py:

from xmlrpclib import ServerProxy
if __name__ == '__main__':
    s = ServerProxy("http://127.0.0.1:8080")
    print s.add(3,4)
現在,運行server.py,然后運行client.py,client.py所在的console會輸出7。

我們用wireshark看一下這期間傳遞的數據是什么樣子的,請求的數據:
代碼如下:
<?xml version='1.0' ?>
<methodCall>
    <methodName>
        add
    </methodName>
    <params>
        <param>
            <value>
                <int> 3 </int>
                </value>
        </param>
        <param>
            <value>
                <int> 4 </int>
            </value>
        </param>
    </params>
</methodCall>
響應的數據:
代碼如下:
<?xml version='1.0' ?>
<methodResponse>
    <params>
        <param>
            <value>
                <int> 7 </int>
            </value>
        </param>

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 无为县| 历史| 安康市| 清水河县| 静安区| 墨竹工卡县| 随州市| 石狮市| 搜索| 巨鹿县| 鹿邑县| 清徐县| 运城市| 墨江| 曲松县| 牟定县| 林芝县| 鹰潭市| 新绛县| 方城县| 彰化市| 松原市| 枝江市| 呼和浩特市| 富顺县| 迁西县| 阿拉善盟| 珲春市| 晋宁县| 利川市| 涡阳县| 乌什县| 纳雍县| 肇庆市| 张家口市| 黎平县| 阳东县| 柘城县| 雷州市| 汝州市| 高唐县|