protobuf简单测试应用
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了protobuf简单测试应用相关的知识,希望对你有一定的参考价值。
protobuf是google推出的一种数据交换协议,比较适合应用于底层服务交互,nodejs提供protobufjs包的实现,下面是一个简单的测试demo:
首先是.proto文件:
package desktop; syntax = "proto3"; message helloworld { required int32 id = 1; // id required string str = 2; // str optional int32 opt = 3; // optional field }
然后是一个测试的nodejs程序,主要是加载.proto文件->实例化message->message buffer化->将buffer保存进log文件:
var ProtoBuf = require("protobufjs"); var PORT = 33333; var HOST = \'127.0.0.1\'; var fs = require(\'fs\'); var root = ProtoBuf.loadSync("./desktop.helloworld.proto"), HelloWorld = root.lookupType("desktop.helloworld"); var hw = { \'id\': 101, \'str\': \'helloworld!\' } var errMsg = HelloWorld.verify(hw) console.log(errMsg) if (errMsg) { throw errMsg } else { var message = HelloWorld.create(hw) var buffer = HelloWorld.encode(message).finish() var message = HelloWorld.decode(buffer) console.log(message) fs.writeFile(\'./test.log\', buffer, err => { if (!err) { console.log(\'Done!\') } else { console.err(err) } }) }
具体效果:
protobuf相比传统的xml、json,数据传输更加紧凑,二进制协议也更加高效,非常适合于各种服务间的数据交换,目前各大主流语言基本都有具体实现。
以上是关于protobuf简单测试应用的主要内容,如果未能解决你的问题,请参考以下文章
PBTK:一款针对Protobuf App的逆向工程与模糊测试套件