-
这里写了一个简单的示例检测proto是否可以使用。
使用protoBuf需要提供以下:
①protobuf-java-2.6.1-sources.jar
②protoc-2.6.1-win32.zip
这两个文件我已经添加了附件,当然也可去谷歌官网下载,不过需要fq,下面是两个文件的直接下载路径,需要注意jar和zip的版本一定要相同。
jarUrl:http://grepcode.com/snapshot/repo1.maven.org/maven2/com.google.protobuf/protobuf-java/2.4.1
zipUrl:https://developers.google.com/protocol-buffers/docs/downloads
获取后,需要创建一个proto文件,例如
option java_package = "protoBuf";
option java_outer_classname = "protoBuffer";
message msgInfo {
required int32 ID = 1;
required int64 GoodID = 2;
required string Url = 3;
required string Guid = 4;
required string Type = 5;
required int32 Order = 6;
}
将这个文件放入zip的压缩文件中,和proto.exe同目录
然后在cmd进入当前目录,执行 protoc.exe --java_out=./ msg.proto(文件名)
会在同目录中生成一个java文件,将这个java文件引入eclipse中就可以使用了
下面是检测代码
package protoBufUtils;
import protoBuf.protoBuffer;
public class protoSerializeUtils {
//消息序列化
public static byte[] serialize(){
protoBuffer.msgInfo.Builder builder=protoBuffer.msgInfo.newBuilder();
builder.setGoodID(10); //消息ID
builder.setGuid("11111-22222-33333-123"); //唯一标示符号
builder.setOrder(2); //命令
builder.setType("ITEM"); //设置消息类型
builder.setID(20); //设置用户ID
builder.setUrl("http://one.jpg"); //设置URL
protoBuffer.msgInfo info=builder.build(); //生成消息
byte[] result=info.toByteArray();
System.out.println(result);
return result;
}
//消息反序列化
public static void versaSerialize(byte[] result){
try{
protoBuffer.msgInfo msg = protoBuffer.msgInfo.parseFrom(result);
System.out.println(msg);
}
catch(Exception ex){
System.out.println(ex.getMessage());
}
}
public static void main(String[] args) {
protoSerializeUtils.versaSerialize(protoSerializeUtils.serialize());;
}
}