2. 解析方法名实现
class MethodProtocol(object):
def __init__(self, connection):
self.conn = connection
def _read_all(self, size):
"""
读取指定长度的字节
:param size: 长度
:return: 读取出的二进制数据
"""
if isinstance(self.conn, BytesIO):
# BytesIO类型,用于演示
buff = b''
have = 0
while have < siz
### 测试
```python
if __name__ == '__main__':
proto = DivideProtocol()
# 构造消息
buff = BytesIO()
# buff.write(proto.args_encode(100, 200))
buff.write(proto.args_encode(100))
# 解读消息
buff.seek(0)
name = MethodProtocol(buff).get_method_name()
print(name)
args = proto.args_decode(buff)
print(args)
buff.close()
RPC传输
在构造好RPC消息数据后,就可以通过网络在调用双方进行传递了。
传递消息数据常用的有两种方式:TCP 和 HTTP
1. TCP
由于TCP的可靠性,所以TCP是最常用的方式。我们可以直接借助socket工具进行TCP开发。
TCP服务端编写
sock = socket.socket() # 创建一个套接字
sock.bind() # 绑定端口
sock.listen() # 监听连接
sock.accept() # 接受新连接
sock.close() # 关闭服务器套接字
TCP客户端编写
sock = socket.socket() # 创建一个套接字
sock.connect() # 连接远程服务器
sock.recv(