• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 使用Android網絡編程實現簡易聊天室(2)

    發表于:2013-07-19來源:Csdn作者:孤云點擊數: 標簽:Android
    import java.net.Socket; public class ServerThread implements Runnable { // 定義當前線程所處理的Socket private Socket socket = null; // 該線程所處理的Socket所對應的輸入流 Buffer

      import java.net.Socket;

      public class ServerThread implements Runnable {

      // 定義當前線程所處理的Socket

      private Socket socket = null;

      // 該線程所處理的Socket所對應的輸入流

      BufferedReader br = null;

      public ServerThread(Socket socket) throws IOException {

      this.socket = socket;

      // 初始化該Socket對應的輸入流

      br = new BufferedReader(new InputStreamReader(socket.getInputStream(),

      "utf-8"));

      }

      @Override

      public void run() {

      try {

      String content = null;

      // 采用循環不斷從Socket中讀取客戶端發送過來的數據

      while ((content = readFromClient()) != null) {

      // 遍歷socketList中的每個Socket,將讀到的內容向每個Socket發送一次

      for (Socket s : MyServer.socketList) {

      OutputStream os = s.getOutputStream();

      os.write((content + "\n").getBytes("utf-8"));

      }

      }

      } catch (Exception e) {

      e.printStackTrace();

      }

      }

      /**

      * 定義讀取客戶端數據的方法

      *

      * @return

      */

      private String readFromClient() {

      try {

      return br.readLine();

      }

      // 如果捕捉到異常,表明該Socket對應的客戶端已經關閉

      catch (Exception e) {

      // 刪除該Socket

      MyServer.socketList.remove(socket);

      e.printStackTrace();

      }

      return null;

      }

      }

      客戶端主類(Activity):

      [java] view plaincopyprint?

      package com.home.activity;

      import java.io.OutputStream;

      import java.net.Socket;

      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 com.home.R;

      import com.home.util.ClientThread;

      public class MultiThreadClient extends Activity {

      private EditText input, show;

      private Button sendBtn;

      private OutputStream os;

      private Handler handler;

      @Override

      protected void onCreate(Bundle savedInstanceState) {

      super.onCreate(savedInstanceState);

      setContentView(R.layout.activity_main);

      input = (EditText) findViewById(R.id.main_et_input);

      show = (EditText) findViewById(R.id.main_et_show);

      sendBtn = (Button) findViewById(R.id.main_btn_send);

      handler = new Handler() {

      @Override

      public void handleMessage(Message msg) {

      // 如果消息來自子線程

      if (msg.what == 0x234) {

      // 將讀取的內容追加顯示在文本框中

      show.append("\n" + msg.obj.toString());

      }

      }

      };

      Socket socket;

      try {

      socket = new Socket("192.168.0.101", 20000);

      // 客戶端啟動ClientThread線程不斷讀取來自服務器的數據

      new Thread(new ClientThread(socket, handler)).start();

      os = socket.getOutputStream();

      } catch (Exception e) {

      e.printStackTrace();

      }

      sendBtn.setOnClickListener(new OnClickListener() {

      @Override

      public void onClick(View v) {

      try {

      // 將用戶在文本框內輸入的內容寫入網絡

      os.write((input.getText().toString() + "\r\n").getBytes());

      // 清空input文本框數據

      input.setText("");

      } catch (Exception e) {

      e.printStackTrace();

      }

      }

      });

      }

      }

      package com.home.activity;

      import java.io.OutputStream;

      import java.net.Socket;

      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 com.home.R;

      import com.home.util.ClientThread;

      public class MultiThreadClient extends Activity {

      private EditText input, show;

      private Button sendBtn;

      private OutputStream os;

    原文轉自:http://blog.csdn.net/u010142437/article/details/9327541

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>