Google protobuf在android下面运用
2012-03-14 13:19
826 查看
package com.demo; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.net.Socket; import java.net.UnknownHostException; import quote.Quote; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.TextView; //客户端的实现 public class MainActivity extends Activity { private TextView text1; private Button but1; Socket socket = null; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); text1 = (TextView) findViewById(R.id.text1); but1 = (Button) findViewById(R.id.button1); but1.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View v) { try { socket = new Socket("172.16.3.3", 8000); Quote.RealtimeRequest req = Quote.RealtimeRequest.newBuilder().setSeccode("sh600000").build(); int req_pkgbody_length = req.getSerializedSize(); Log.i(">>>>>>>>>req_pkgbody_length>>>>>>>>>", req_pkgbody_length+">>>>>>>>>>>>>>"); Quote.PkgHeader req_pkgheader = Quote.PkgHeader.newBuilder().setBodySize(req_pkgbody_length) .setVer("1.0").setEnc(false).setZip(false).setMore(false).setMsgType(Quote.PkgHeader.MsgType.REQ_REALTIME) .build(); int req_pkgheader_length = req_pkgheader.getSerializedSize(); Log.i(">>>>>>>>>req_pkgheader_length>>>>>>>>>", req_pkgheader_length+">>>>>>>>>>>>>>"); byte[] req_pkg = new byte[req_pkgheader_length + req_pkgbody_length]; byte[] b1 = req.toByteArray(); byte[] b2 = req_pkgheader.toByteArray(); System.arraycopy(b1, 0, req_pkg, 0, b1.length); System.arraycopy(b2, 0, req_pkg, b1.length, b2.length); DataOutputStream out = new DataOutputStream(socket.getOutputStream()); out.write(req_pkg); out.flush(); Log.i(">>>>>>>>>out>>>>>>>>>", ">>>>>>>>>>>>>>"); DataInputStream in = new DataInputStream(socket.getInputStream()); byte[] res_pkgheader = new byte[15]; in.readFully(res_pkgheader, 0, 15); Quote.PkgHeader res_pkgheader_ = Quote.PkgHeader.parseFrom(res_pkgheader); int res_pkgbody_length = res_pkgheader_.getBodySize(); byte[] res_pkgbody = new byte[res_pkgbody_length]; in.readFully(res_pkgbody, 0, res_pkgbody_length); Log.i(">>>>>>>>>res_pkgbody_length>>>>>>>>>", res_pkgbody.length+">>>>>>>>>>>>>>"); Quote.RealTimeResponse res_realtime = Quote.RealTimeResponse.parseFrom(res_pkgbody); text1.setText(res_realtime.getNewprice() + ">>>>>>>"); socket.close(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } }); } }
相关文章推荐
- 运用google-protobuf的IM消息应用开发(前端篇)
- 运用google-protobuf的IM消息应用开发(前端篇)
- GOOGLE PROTOBUF开发者指南
- Protobuf实现Android Socket通讯开发教程
- google ProtoBuf开发者指南
- Google 的开源技术 protobuf 简介与例子
- Go实战--go中使用google/protobuf(The way to go)
- Protobuf(Google Protocol Buffer)编码学习笔记
- Google 的开源技术protobuf 简介与例子
- Google 的开源技术protobuf 简介与例子
- no module named google.protobuf.internal
- android与PC,C#与Java 利用protobuf 进行无障碍通讯【Socket
- Google的Protobuf安装及使用笔记
- Google protobuf 学习
- 使用CSharp编写Google Protobuf插件
- 【caffe学习笔记】python caffe报错:No module named google.protobuf.internal
- google protobuf 简单实例
- Google 的开源技术protobuf 简介与例子
- Google protoBuf
- python解决ImportError: No module named google.protobuf