安卓客户端接收信息并显示

客户端接收到信息的是byte类型数据,handleMessage(Message msg) 中的形参msg存在的数据类型只有int型和Bundle类型,所以需要对接收到的byte类型数据转换成Bundle类型传递给handleMessage(Message msg),然后将Bundle类型数据转换成字符串进行显示

Message msg = new Message();
Bundle b = new Bundle();
byte[] data = new byte[120];

int len = in.read(data);
String string = new String(data, 0, len); //将类型为byte的data指定部分转化为字符串给string
b.putString("message", string); //键指对,将string拷贝给b的message
msg.setData(b); //将Bundle数据b放入msg中
h.sendMessage(msg); //调用handleMessage()
h = new Handler(){	
public void handleMessage(Message msg) { //信息处理函数
    // TODO Auto-generated method stub
    super.handleMessage(msg);
    Bundle b = msg.getData();	//取出msg中存放的Bundle类型数据
    String string  = b.getString("message"); //取出b中存放的字符串
    text.setText(string);	//显示信息
}};

源码:

package com.example;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends Activity {
	public TextView text;
	public Handler h;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        text = (TextView) findViewById(R.id.test1); //关联文本组件
        
        h = new Handler(){	
        public void handleMessage(Message msg) { //信息处理函数
        	// TODO Auto-generated method stub
        	super.handleMessage(msg);
        	Bundle b = msg.getData();	//取出msg中存放的Bundle类型数据
        	String string  = b.getString("message"); //取出b中存放的字符串
        	text.setText(string);	//显示信息
        }};
    }
    
    public void click(View v) { //按键响应函数
    	new Thread(new Runnable() {
			public void run() {
				Message msg = new Message();
		    	Bundle b = new Bundle();
		    	byte[] data = new byte[120];
		    	
				try {
					Socket client = new Socket("192.168.31.224", 8080);
			    	InputStream  in  = client.getInputStream();
			    
			    	int len = in.read(data);
			    	String string = new String(data, 0, len); //将类型为byte的data指定部分转化为字符串给string
			    	b.putString("message", string); //键指对,将string拷贝给b的message
			    	msg.setData(b); //将Bundle数据b放入msg中
			    	h.sendMessage(msg); //调用handleMessage()
				} catch (UnknownHostException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}).start();
    } 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值