java udp传输protobuf
来源:互联网 发布:篮球记分牌软件 编辑:程序博客网 时间:2024/06/06 08:46
最近在研究android的udp开发,前后端用protobuf传输协议。由于序列化后的二进制流一下子不能解析成对应的类。经过一番思考,可以用两次序列化的方式实现,将要发送的序列化字节流放入到另外一个发送类里面,这样的话只需要发送总的序列化类即可。
总的序列化类:
option java_package = "com.example.minedemo"; option java_outer_classname = "TypeInfo"; message typeinfo{ required int32 id = 1; required bytes bytesData = 2; }
比如要发送的登陆类:
option java_package = "com.example.minedemo"; option java_outer_classname = "LoginMsg"; message msginfo{ required int32 id = 1; required int32 single = 2; required string name = 3; required string pwd = 4; }
前后端只发送Typeinfo序列化类即可。
试验下:
Msg.msginfo.Builder msg = Msg.msginfo.newBuilder().setId(1).setSingle(1).setName("xxb").setPwd("123456"); Msg.msginfo info = msg.build(); byte[] bytes = info.toByteArray(); try { TypeInfo.typeinfo.Builder typeinfo = TypeInfo.typeinfo.newBuilder().setId(11).setBytesData(ByteString.copyFrom(bytes)); TypeInfo.typeinfo typeinfo1 = typeinfo.build(); byte[] typebytes = typeinfo1.toByteArray(); TypeInfo.typeinfo responseType = TypeInfo.typeinfo.parseFrom(typebytes); Msg.msginfo test = Msg.msginfo.parseFrom(responseType.getBytesData().toByteArray()) ; String showStr =test.getId()+">>"+test.getName(); new AlertDialog.Builder(this).setTitle(showStr).show(); Toast.makeText(this,showStr,Toast.LENGTH_LONG).show(); } catch (Exception e){}
0 0
- java udp传输protobuf
- java UDP传输
- java UDP传输详解
- java(7)--UDP传输
- java udp传输实例
- JAVA UDP 图像传输实例
- Java基于UDP传输信息
- 【基于Java】udp传输实例
- 理解java中的UDP传输!
- java中UDP传输协议
- UDP传输文件(java)
- Java使用UDP实现数据的传输
- Java学习笔记 UDP协议传输信息
- Java 使用 TCP 和 UDP 传输文件
- socket的UDP传输文件java源代码
- java使用UDP协议传输数据
- java使用UDP协议传输数据
- java网络编程--udp传输示例
- STL模板库list,vector
- RelativeLayout的重要属性
- 四种常见的 POST 提交数据方式
- MFC_CString
- 创建SSH key
- java udp传输protobuf
- Objective-C - 代码块block
- powerbuilder调试
- DJANGO基础学习之request对象和response对象
- [Java]LeetCode22 Generate Parentheses
- click按钮选择事件
- html5 audio设置currentTime
- selenium 2.0 webdriver 学习笔记(一)
- UVA 755 解题报告