1.什麼是protocol buffer
ProtocolBuffer是用於結構化數據串行化的靈活、高效、自動的方法,有如XML,不過它更小、更快、也更簡單。你可以定義自己的數據結構,然後使用代碼生成器生成的代碼來讀寫這個數據結構。你甚至可以在無需重新部署程序的情況下更新數據結構。
1. google官方連接地址 http://code.google.com/p/protobuf/downloads/list
2. 選擇proto.exe壓縮包protoc-2.4-win32.zip和protobuf-java-2.4.1.jar壓縮包protobuf-2.4.zip
3.下載一個protobuf-java-2.4.1.jar文件(注意,要與你剛纔下的proto.exe版本相同,否則可能出現編譯通不過現象)
4.在proto.exe同級目錄,編寫一個netbean.proto文件,爲需要序列化的數據接口加入一個message屬性,爲每一個字段指定名稱和類型,如下所示(message 的名稱不能與java_outer_classname 名稱相同,不然編譯不過 ):
package com.leehongee.netserver.net.bean;
option java_package = "com.leehongee.netserver.net.bean";
option java_outer_classname = "Request";
message request_Net {
required string cmd = 1;
optional int32 keycode = 2;
optional sint32 posX = 3;
optional sint32 posY = 4;
optional bool onOrOff = 5;
optional bool ontouch = 6;
}
備註:限定修飾符 required ,optional ,repeated
required: 表示是一個必須字段,必須相對於發送方,在發送消息之前必須設置該字段的值,對於接收方,必須能夠識別該字段的意思。
optional:表示是一個可選字段,可選對於發送方,在發送消息時,可以有選擇性的設置或者不設置該字段的值。
repeated:表示該字段可以包含0~N個元素。其特性和optional一樣,但是每一次可以包含多個值。
5.使用CMD命令編譯這個netbean.proto文件:
D:\protoc-2.4.1-win32>protoc.exe --java_out=./ netbean.proto
6.在目錄com\leehongee\netserver\net\bean 目錄下將生成一個Request.java源文件,並將其引入到Myeclipse中
7.把jar包protobuf-java-2.4.1.jar也引入到工程libs目錄中
8.使用方法調用序列化:
Request .request_Net .Builder builder=Request .request_Net ..newBuilder();
builder.setCmd("ontouch");
Request .request_Net request=builder.builder();
byte[] buffer=request.toByteAarray();
9.使用反序列化:
try{
Request .request_Net request = Request .request_Net .parseFrom(buffer);
}
catch(Exception ex){
System.out.println(ex.getMessage());
}
from: http://www.cnblogs.com/leehongee/p/3323784.html