socket client">package com.a; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.Socket; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; public class Test extends Activity implements Runnable { /** Called when the activity is first created. */ private TextView tv_msg = null; private EditText ed_msg = null; private Button btn_send = null; private Button btn_login = null; private static final String HOST = "10.166.112.158"; private static final int PORT = 9999; private Socket socket = null; private BufferedReader in = null; private PrintWriter out = null; private String content = ""; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.client); tv_msg = (TextView) this.findViewById(R.id.TextView); ed_msg = (EditText) this.findViewById(R.id.EditText01); btn_login = (Button) this.findViewById(R.id.Button01); btn_send = (Button) this.findViewById(R.id.Button02); try { socket = new Socket(HOST, PORT); in = new BufferedReader(new InputStreamReader(socket.getInputStream())); out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true); } catch (Exception ex) { ShowDialog("登陆异常:" + ex.getMessage()); } btn_send.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { String msg = ed_msg.getText().toString(); if (socket.isConnected()) { if (!socket.isOutputShutdown()&& msg.length()>0) { out.println(msg); out.flush();// ju shuo important ed_msg.setText(""); Toast.makeText(Test.this, "发送完成!", Toast.LENGTH_SHORT).show(); }else { Toast.makeText(Test.this, "没有内容!不会被发送!", Toast.LENGTH_SHORT).show(); ed_msg.setFocusable(true); } } } }); btn_login.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { String msg = ed_msg.getText().toString(); if(msg.length()<=0) { Toast.makeText(Test.this, "content应包含内容!", Toast.LENGTH_SHORT).show(); } } }); new Thread(this).start(); } public void ShowDialog(String msg) { new AlertDialog.Builder(this).setTitle("提示").setMessage(msg) .setPositiveButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { } }).show(); } public void run() { try { while (true) { if(socket.isConnected()){ if(!socket.isInputShutdown()){ if ((content = in.readLine()) != null) { Log.i("TAG", "++ "+content); content += "\n"; mHandler.sendMessage(mHandler.obtainMessage()); }else{ } } } } } catch (Exception ex) { ex.printStackTrace(); } } //要有SWING的思想,回调,传参 public Handler mHandler = new Handler() { public void handleMessage(Message msg) { super.handleMessage(msg); Log.i("TAG", "-- "+msg); tv_msg.setText(tv_msg.getText().toString() + content); } }; }
?