Android 網路編程基礎之簡單聊天程式

來源:互聯網
上載者:User

標籤:

前一篇講了Android的網路編程基礎,今天寫了一個簡單的聊天程式分享一下

首先是服務端代碼:

 1 package com.jiao.socketdemo; 2  3 import java.io.BufferedReader; 4 import java.io.BufferedWriter; 5 import java.io.IOException; 6 import java.io.InputStreamReader; 7 import java.io.OutputStreamWriter; 8 import java.net.ServerSocket; 9 import java.net.Socket;10 11 public class ChatServer extends Thread {12     private ServerSocket server = null;13     private static final int PORT = 5550;14     private BufferedWriter writer;15     private BufferedReader reader;16 17     public ChatServer() throws IOException {18 19         CreateSocket();//初始化socket20     }21 22     @Override23     public void run() {24 25         Socket client;26         String txt;27 28         try {29             while (true) {30                 // 擷取應答訊息31                 client = ResponseSocket();32                 while (true) {33                     // 接受用戶端資訊34                     txt = ReceiveMsg(client);35 36                     System.out.println("用戶端發來的訊息:" + txt);37 38                     SendMsg(client, txt);39 40                     if (true)41                         break;42                 }43                 CloseSocket(client);44             }45         } catch (Exception e) {46             // TODO: handle exception47         }48 49     }50 51     //關閉串連52     private void CloseSocket(Socket client) throws IOException {53         reader.close();54         writer.close();55         client.close();56 57     }58 59     //封裝發送訊息的方法60     private void SendMsg(Socket socket, String Msg) throws IOException {61         writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));62         writer.write(Msg + "\n");63         writer.flush();64     }65 66     //封裝接受訊息的方法67     private String ReceiveMsg(Socket socket) throws IOException {68         reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));69         String txt = reader.readLine();70         return txt;71     }72 73     //接受訊息74     private Socket ResponseSocket() throws IOException {75         Socket client = server.accept();76         return client;77     }78 79     //初始化socket80     private void CreateSocket() throws IOException {81         server = new ServerSocket(PORT, 100);82     }83 84 }

 

啟動服務端的代碼如下:

1 // 建立聊天伺服器2         ChatServer chatserver = new ChatServer();3         // 檢測伺服器是否已經啟動,如果沒有則啟動伺服器4         if (chatserver != null) {5             chatserver.start();6         }

 

以下是用戶端的代碼:

 1 package com.example.socketclient; 2  3 import java.io.BufferedReader; 4 import java.io.BufferedWriter; 5 import java.io.IOException; 6 import java.io.InputStreamReader; 7 import java.io.OutputStreamWriter; 8 import java.net.Socket; 9 import java.net.UnknownHostException;10 import android.app.Activity;11 import android.os.Bundle;12 13 public class MainActivity extends Activity {14     public static int SERVER_PORT = 5550;15 16     @Override17     protected void onCreate(Bundle savedInstanceState) {18         super.onCreate(savedInstanceState);19         setContentView(R.layout.activity_main);20 21         new Thread() {22             public void run() {23                 message();24             }25         }.start();26     }27 28     private void message() {29         try {30             Socket client = RequestSocket("這裡是伺服器的IP", SERVER_PORT);31             SendMsg(client, "client send");32             String txt = ReceiveMsg(client);33             System.out.println("服務端返回資料:" + txt);34         } catch (Exception e) {35 36         }37     };38 39     // 用戶端擷取訊息類40     private Socket RequestSocket(String host, int port)throws UnknownHostException, IOException {41         Socket socket = new Socket(host, port);42         return socket;43     }44 45     // 用戶端發送訊息類46     private void SendMsg(Socket socket, String msg) throws IOException {47         // 將要發送的訊息寫入Buffer 中48         BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));49         // 格式轉換50         writer.write(msg.replace("\n", " ") + "\n");51         // 重新整理,發送52         writer.flush();53     }54 55     // 用戶端接收訊息56     private String ReceiveMsg(Socket socket) throws IOException {57         // 寫入讀Buffer 中// 擷取接收的訊息到資料流中58         BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));59         // 讀取訊息到字串中60         String Msg = reader.readLine();61         // 以字串的方式返回訊息62         return Msg;63     }64 65 }

 

Android 網路編程基礎之簡單聊天程式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.