//消息转到UI线程
final Handler handler = new Handler(){
@Override public void handleMessage(Message msg){Toast.makeText(getApplicationContext()
, msg.getData().getString("msg")
, Toast.LENGTH_SHORT).show();
}
} ;
new android.os.AsyncTask(){
@Override
protected Object doInBackground(Object[] params) {
try {
// cln连接服务端
Socket cln = new Socket("192.168.191.1", 6666);
//cln.getInputStream表示从连接的另一方获取信息,封装读入
BufferedReader in = new BufferedReader(new InputStreamReader(cln.getInputStream()));
//cln.getOututStream表示自己的消息发送,封装写出
PrintWriter out = new PrintWriter(cln.getOutputStream());
//向外面发送"Hello I am from java!" ,进入缓冲区
out.println("Hello I am from java!");
//刷新以此缓冲区,将信息发送出去
out.flush();
//获得message的构造方法
Message m = Message.obtain();
//创建一个Bundle实例对象b,类似map类型的管道
Bundle b = new Bundle();
//将in从服务端得到的信息保存到b中,"msg"->"//伪代码:服务器发来信息"
b.putString("msg", in.readLine());
//用m消息对象接收b的信息
m.setData(b);
//将信息交给handler处理,转到ui线程上
handler.sendMessage(m);
//关闭socke
cln.close();
}catch(Exception e){
/ /各类消息错误
Message m = Message.obtain();Bundle b = new Bundle();
b.putString("msg", e.getMessage());
m.setData(b);
handler.sendMessage(m);
}
return null;
}
}.execute();//异步执行