您的位置:首页 > 移动开发 > Android开发

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();
}
}
});

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: