RPC原理及其调用过程 - Harvard_Fly - 博客园

远程过程调用,简称为RPC,是一个计算机通信协议,它允许运行于一台计算机的程序调用另一台计算机的子程序,而无需额外地为这个交互作用编程。 RPC与传统的HTTP对比 优点: 1. 传输效率高(二进制传

来源: RPC原理及其调用过程 – Harvard_Fly – 博客园

复制代码
 1 import socket
 2 
 3 class Channel(object):
 4     """
 5     与客户端建立网络连接
 6     """
 7 
 8     def __init__(self, host, port):
 9         self.host = host  # 服务器地址
10         self.port = port  # 服务器端口
11 
12     def get_connection(self):
13         """
14         获取一个tcp连接
15         """
16         sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
17         sock.connect((self.host, self.port))
18         return sock
19 
20 
21 class Server(object):
22     def __init__(self, host, port, handlers):
23         self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
24         self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
25         self.host = host
26         self.port = port
27         self.sock.bind((host, port))
28         self.handlers = handlers
29 
30     def serve(self):
31         """
32         开启服务器运行,提供RPC服务
33         """
34         # 开启服务监听,等待客户端连接
35         self.sock.listen(128)
36         print("开始监听")
37         while True:
38             # 接收客户端的连接请求
39             conn, addr = self.sock.accept()
40             print("建立连接{}".format(str(addr)))
41 
42             # 创建ServerStub对象,完成客户端具体的RPC调用
43             stub = ServerStub(conn, self.handlers)
44             try:
45                 while True:
46                     stub.process()
47             except EOFError:
48                 # 表示客户端关闭了连接
49                 print("客户端关闭连接")
50             # 关闭服务端连接
51             conn.close()
复制代码
赞(0) 打赏
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏