C# 使用Google的Protobuf消息协议
废话不多说直接开干
首先安装Google的C# Protobuf库
VS2019 工具>>NuGet包管理器>>管理解决方案的NuGet程序包
把Google.Protobuf安装到你的项目里面
写Protobuf协议文件
写好之后需要用Protobuf的工具把它编译为C#代码
工具我这有现成的也可以自行到官方Git上面下载
用Cmd命令行CD到你的工具目录并且你的Proto文件也需要在这里
然后执行protoc.exe ./CTest.proto --csharp_out=./
执行玩指令之后不出意外目录下面会多出Ctest.cs文件这个文件引用到C#里面就可以了
vs2019右键你的项目>>添加>>现有项>>选择你刚才生成的那个CTest.CS文件
然后就开始写C#代码了
using System;
using LSPClass;//引用你在文件里面定义的命名空间
using Google.Protobuf;//引用Google的Protobuf库
namespace Protobuf_Test
{
class Program
{
static void Main(string[] args)
{
//new一个你定义的LSP消息类
LSP lsp = new LSP();
//为LSP各个属性赋值
lsp.Name = "最简单的复杂";
lsp.Age = 999;
//定义一个储存序列化后的消息数据大小为上面的LSP类的大小
byte[] LspData = new byte[lsp.CalculateSize()];
//定义一个Google库的输出流,传入LSPData
CodedOutputStream LSPOutput = new CodedOutputStream(LspData);
//将lsp类写入到输出流就完成了序列化
lsp.WriteTo(LSPOutput);
//下面来反序列化
//定义一个Google库的输入流,传入LspData
CodedInputStream LSPInput = new CodedInputStream(LspData);
//new一个LSP类
LSP Dlsp = new LSP();
//传入定义的那个输入流
Dlsp.MergeFrom(LSPInput);
Console.WriteLine("名字:"+Dlsp.Name);
Console.WriteLine("年龄:"+Dlsp.Age);
}
}
}