2. 解析方法名实现
class MethodProtocol(object):def __init__(self, connection):self.conn = connectiondef _read_all(self, size):"""读取指定长度的字节:param size: 长度:return: 读取出的二进制数据"""if isinstance(self.conn, BytesIO):# BytesIO类型,用于演示buff = b''have = 0while 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消息数据后,就可以通过网络在调用双方进行传递了。

传递消息数据常用的有两种方式:TCPHTTP

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(