客户端接收到信息的是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();
}
}