zoukankan      html  css  js  c++  java
  • protobuf-net简单使用

    • 第一个测试的proto文件
     1 syntax = "proto3";
     2 package ProtoMsg;
     3 
     4 message Foo
     5 {
     6     string name = 1;
     7     int32 id = 2;
     8     repeated bytes data = 3;
     9     enum Types
    10     {
    11         Hight = 0;
    12         Low = 1;
    13         Normal = 2;
    14     }
    15     Types type = 4;
    16 }
    •  第二个测试proto文件
    1 syntax = "proto3";
    2 import "Foo.proto";
    3 package ProtoMsg;
    4 
    5 message FooWapper
    6 {
    7     repeated Foo foos = 1;
    8 }
    • 分别生成C#源文件
    1 protogen.exe Foo.proto --csharp_out=./
    2 protogen.exe FooWrapper.proto --csharp_out=./
    • 例子程序
     1 static void Main(string[] args)
     2         {
     3             FooWapper fw = new FooWapper();
     4             Foo f = new Foo();
     5             f.Datas.Add(new byte[] {0x1, 0x2, 0x3});
     6             f.Id = 12345678;
     7             f.Name = "proto-net";
     8             f.Type = Foo.Types.Hight;
     9             fw.Foos.Add(f);
    10 
    11             byte[] data;
    12             Console.WriteLine("开始序列化数据.");
    13             using (var stream = new MemoryStream())
    14             {
    15                 Serializer.Serialize(stream, fw);
    16                 data = stream.ToArray();
    17             }
    18 
    19             Console.WriteLine("开始反序列化数据.");
    20             using (var stream = new MemoryStream(data))
    21             {
    22                 var _fw = Serializer.Deserialize<FooWapper>(stream);
    23                 Console.WriteLine(_fw);
    24             }
    25 
    26             Console.ReadKey();
    27         }
    • 程序执行结果

     

  • 相关阅读:
    Problem F
    Problem L
    Problem L
    Problem B
    Problem B
    读书笔记-Java设计模式
    读书笔记-内存初始化和清理
    读书笔记- 一切都是对象
    Android多点触控技术实战,自由地对图片进行缩放和移动
    Native开发与JNI机制详解
  • 原文地址:https://www.cnblogs.com/linxmouse/p/7902418.html
Copyright © 2011-2022 走看看