概念java
1.什麼是protocol buffer數據結構
ProtocolBuffer是用於結構化數據串行化的靈活、高效、自動的方法,有如XML,不過它更小、更快、也更簡單。你能夠定義本身的數據結構,而後使用代碼生成器生成的代碼來讀寫這個數據結構。你甚至能夠在無需從新部署程序的狀況下更新數據結構。eclipse
1. google官方鏈接地址 http://code.google.com/p/protobuf/downloads/listui
2. 選擇proto.exe壓縮包protoc-2.4-win32.zip和protobuf-java-2.4.1.jar壓縮包protobuf-2.4.zipgoogle
3.下載一個protobuf-java-2.4.1.jar文件(注意,要與你剛纔下的proto.exe版本相同,不然可能出現編譯通不過現象)spa
4.在proto.exe同級目錄,編寫一個netbean.proto文件,爲須要序列化的數據接口加入一個message屬性,爲每個字段指定名稱和類型,以下所示(message 的名稱不能與java_outer_classname 名稱相同,否則編譯不過 ):.net
package com.leehongee.netserver.net.bean;code
option java_package = "com.leehongee.netserver.net.bean";server
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());
}