1.下载可执行文件 protoc.exe
​​​ https://github.com/google/protobuf/releases/​​​ 里的protoc-3.3.0-win32.zip,解压拿到protoc.exe
最方便的方式通过NuGet包管理器,安装 Google.Protobuf 3.3.0 和 Google.Protobuf.Tools 3.3.0,这个包含了预编译的protoc.exe和和在tool下的一堆.proto文件。下载前要求.net框架为.NET 4.5+
生成的Google.ProtocolBuffers.dll将被用作外部链接的DLL使用
为了产生C#文件,带上--csharp_out 选项 执行protoc ,目前支持 C++,C#,java,javanano,php,,js,objectc,python,ruby

2.制作run.bat文件

@echo off
set "TOOLPATH=%cd%/protoc.exe"
cd ../
%TOOLPATH% --csharp_out=src/com/ooxx/common/proto --proto_path=src/com/ooxx/common/proto src/com/ooxx/common/proto/game.proto

protoc  参数说明:
--csharp_out =out_dir 导出文件的目录
--proto_path proto文件所在目录

3.option optimize_for = SPEED;
optimize_for是文件级别的选项,Protocol Buffer定义三种优化级别SPEED/CODE_SIZE/LITE_RUNTIME。缺省情况下是SPEED。
SPEED: 表示生成的代码运行效率高,但是由此生成的代码编译后会占用更多的空间。
CODE_SIZE: 和SPEED恰恰相反,代码运行效率较低,但是由此生成的代码编译后会占用更少的空间,通常用于资源有限的平台,如Mobile。

LITE_RUNTIME: 生成的代码执行效率高,同时生成代码编译后的所占用的空间也是非常少。这是以牺牲Protocol Buffer提供的反射功能为代价的。

4:option java_multiple_files=true; 让每个消息都独立生成文件,减少单个文件的大小

服务端打印字节流工具

ByteBufUtil.prettyHexDump(ByteBuf buffer);

         +-------------------------------------------------+
         |  0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f |
+--------+-------------------------------------------------+----------------+
|00000000| 05 08 a4 06 10 02                               |......          |
+--------+-------------------------------------------------+----------------+

         +-------------------------------------------------+
         |  0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f |
+--------+-------------------------------------------------+----------------+
|00000000| 47 08 c5 d6 1b 10 02 1a 3f bd bf 10 90 96 df 12 |G.......?.......|
|00000010| 8c 08 63 ee f3 ac 02 2b fe c9 11 c0 35 df 4d 1a |..c....+....5.M.|
|00000020| 1f 53 ec 31 cc 32 ec 33 ca 44 eb 44 ec 32 ec 20 |.S.1.2.3.D.D.2. |
|00000030| ef 28 ef 30 63 ee f3 ac 02 2b 5c 0c 91 88 e6 e7 |.(.0c....+\.....|
|00000040| 77 b1 b1 b8 25 e5 46 0a                         |w...%.F.        |
+--------+-------------------------------------------------+----------------+

字符串进行16进制加密传输

buffer.writeBytes(ByteBufUtil.decodeHexDump(phone20Str(phoneNum)));