作業資訊 | 已交名單(26)
項目 | 內容 |
允許遲交 | 是 |
開放觀摩 | 是 |
屬性 | 個人作業 |
成績比重 | 2% |
期限 | 2012-04-26 23:59 |
附件 | |
描述 | As title. James // --------------- package tw.edu.hust.bn98000; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; 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.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; public class EchoClient extends Activity implements OnClickListener { // EditText edServer, edData; Button btnConnect, btnDisconnect, btnSend; TextView tvResult; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // edServer = (EditText) findViewById(R.id.edServer); edData = (EditText) findViewById(R.id.edData); btnConnect = (Button) findViewById(R.id.btnConnect); btnSend = (Button) findViewById(R.id.btnSend); btnDisconnect = (Button) findViewById(R.id.btnDisconnect); tvResult = (TextView) findViewById(R.id.tvResult); // btnConnect.setOnClickListener(this); btnSend.setOnClickListener(this); btnDisconnect.setOnClickListener(this); } @Override public void onClick(View arg0) { // TODO Auto-generated method stub switch (arg0.getId()) { case R.id.btnConnect: connect(); break; case R.id.btnSend: send(); break; case R.id.btnDisconnect: disconnect(); break; } } private void disconnect() { // TODO Auto-generated method stub try { cs.close(); Toast.makeText(this, "斷線成功!", Toast.LENGTH_LONG).show(); } catch (IOException e) { // TODO Auto-generated catch block Toast.makeText(this, "IO錯誤!", Toast.LENGTH_LONG).show(); e.printStackTrace(); } } private void send() { // TODO Auto-generated method stub String msg = edData.getText().toString(); try { bw.write(msg + "\n"); bw.flush(); Toast.makeText(this, "傳送成功!", Toast.LENGTH_LONG).show(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } MyHandler handler = new MyHandler(); Socket cs; BufferedReader br; BufferedWriter bw; private void connect() { // TODO Auto-generated method stub try { cs = new Socket("entry.hust.edu.tw", 7); InputStream in = cs.getInputStream(); OutputStream out = cs.getOutputStream(); br = new BufferedReader(new InputStreamReader(in)); bw = new BufferedWriter(new OutputStreamWriter(out)); Toast.makeText(this, "連線成功!", Toast.LENGTH_LONG).show(); // 處理輸入的 Thread ! new Thread() { @Override public void run() { // TODO Auto-generated method stub while (true) { try { String data = br.readLine(); //tvResult.append(data + "\n"); Bundle bb = new Bundle(); bb.putString("ECHO", data); Message msg = new Message(); msg.setData(bb); handler.sendMessage(msg); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }.start(); } catch (UnknownHostException e) { // TODO Auto-generated catch block Toast.makeText(this, "主機名稱錯誤!", Toast.LENGTH_LONG).show(); e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block Toast.makeText(this, "IO錯誤!", Toast.LENGTH_LONG).show(); e.printStackTrace(); } } class MyHandler extends Handler { @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub super.handleMessage(msg); tvResult.append(msg.getData().getString("ECHO")+"\n"); } } } |