Protobu协议
1. protobuf
- protobuf是Google公司提出的一种更轻便高效的结构化数据存储格式,常用于结构化数据的序列化,具有语言无关、平台无关、可扩展性特性,常用于通讯协议、服务端数据交换场景。
1.1 Win安装
- 下载地址:https://github.com/protocolbuffers/protobuf/releases
- 添加环境变量
- 终端打印版本:protoc --version
1.2 Mac安装
brew install protobuf@3 # @3 标识安装 protobuf 的3版本,默认安装2版本。目前2本版有问题。 安装3.20 及以上的版本。
- 如果电脑未安装brew,则先安装:
>>>/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" >>>brew --version
- 添加环境变量
PATH="/usr/local/opt/protobuf@3.20/bin:${PATH}" export PATH
2. 使用
创建xxx.proto文件
syntax = "proto3";
package aa;
message Person{
string name = 1;
int32 age = 2;
}
message Message{
string method = 1;
string poyload = 2;
}
根据命令生成python可调用文件
protoc --python_out=. xx.proto
xx.proto:proto文件
--python_out=.:生成的python可调用文件,等号后边是存放路径,.代表当前路径
3. python调用proto文件
- 安装:pip install protobuf
from hello_pb2 import Message,Person # 引入 Message,Person
p = Person() # 创建Person对象
p.name = 'abc'
p.age = 11
# 转换数据
info = p.SerializeToString()
print(info)
# 接收数据后转换
obj = Person()
obj.ParseFromString(info)
print(obj.name)
print(obj.age)