iT邦幫忙

2024 iThome 鐵人賽

DAY 7
0
Software Development

十年後重讀作業系統恐龍本系列 第 7

ch3圖3.23-客戶—伺服器系統的通信:遠程程序呼叫(RPC)

  • 分享至 

  • xImage
  •  

遠程程序呼叫(Remote Procedure Call,RPC):
被設計成一種使用在以網路連接之系統間的程序呼叫方法。相較於 IPC 訊息,RPC 通信所交換的訊息有良好的架構,因此不再只是封包形式的資料。這些訊息被送往一個 RPC 守護程式(此 RPC 守護程式正在傾聽遠方系統的一個 port),訊息中包含被執行函數的識別符號和傳遞給該函數的參數。然後,這個函數會根據要求被執行,而任何輸出會以另一個獨立訊息送回給要求者。

RPC 的執行如下
https://ithelp.ithome.com.tw/upload/images/20240921/20168766BNVEXR82NK.jpg

請 AI 幫我生成一個使用 XML-RPC 在不同行程間通信的例子
server.py

from xmlrpc.server import SimpleXMLRPCServer
import multiprocessing

def add(x, y):
    return x + y

def run_server():
    server = SimpleXMLRPCServer(("localhost", 8000))
    server.register_function(add, "add")
    print("RPC 服務器正在運行...")
    server.serve_forever()

if __name__ == "__main__":
    # 使用多進程來啟動服務器
    server_process = multiprocessing.Process(target=run_server)
    server_process.start()

client.py

import xmlrpc.client

def run_client():
    with xmlrpc.client.ServerProxy("http://localhost:8000/") as proxy:
        result = proxy.add(5, 4)
        print(f"5 + 4 = {result}")

if __name__ == "__main__":
    run_client()

結果
https://ithelp.ithome.com.tw/upload/images/20240921/20168766sUHiS3ZURK.pnghttps://ithelp.ithome.com.tw/upload/images/20240921/20168766ZL4Ru687fm.png


上一篇
ch3圖3.20,21,22-客戶—伺服器系統的通信:使用socket的通信
下一篇
ch3圖3.25-客戶—伺服器系統的通信:普通的管道(Ordinary Pipes)
系列文
十年後重讀作業系統恐龍本30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言