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)


 

posted @ 2024-03-01 12:57  Crazy丶迷恋  阅读(2)  评论(0编辑  收藏  举报