Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android 網絡編程: SOCKET的簡單使用。

Android 網絡編程: SOCKET的簡單使用。

編輯:關於Android編程

本文介紹SOCKET 的服務端和客戶端的開發。 在本文中並沒有使用異步來對數據進行接收。 因為網上太多有關異步、存儲客戶端SOCKET的例子了, 但是他們的代碼都非常的多, 非常的繁瑣, 所以這裡就去掉了異步數據接收等。
首先介紹服務端: 這裡代碼實現的是服務端打開後就等待客戶端的連接, 當客戶端連接上後就接收消息, 並發消息回去後馬上關閉鏈接。
如果需要做類是聊天室軟件的話需要加上“異步處理”
[java]
public class SocketServer 

    private ServerSocket mServerSocket; 
    private static final int SERVER_PORT = 6000;    //端口 
 
    public SocketServer() 
    { 
 
    } 
 
    public boolean startServer() 
    { 
        boolean bRet = false; 
        try 
        { 
            //創建一個SOCKET 服務器 
            mServerSocket = new ServerSocket(SERVER_PORT); 
            bRet = true; 
        } catch (Exception e) 
        { 
            // TODO: handle exception 
        } 
 
        return bRet; 
    } 
 
    public void recv() 
    { 
        try 
        { 
            Socket socket = mServerSocket.accept(); 
 
            //拿到客戶端的輸入輸出(讀取,發送) 
            InputStream is = socket.getInputStream(); 
            PrintWriter pw = new PrintWriter(socket.getOutputStream()); 
 
            //這裡讀取客戶端第一次發來的消息     調試來看吧 
            byte buffer[] = new byte[1024]; 
            int reCount = is.read(buffer); 
            String msgString = EncodingUtils.getString(buffer, "GB2312"); 
             
            //我們發回一個"aa"給客戶端 
            pw.print("aa"); 
            pw.flush(); 
             
            //關掉這個連接 
            socket.close(); 
 
        } catch (Exception e) 
        { 
            // TODO: handle exception 
        } 
    } 
     
    public void close() 
    { 
        try 
        { 
            mServerSocket.close(); 
        } catch (Exception e) 
        { 
            // TODO: handle exception 
        } 
    } 

客戶端:
[java] 
public class SocketClient 

    private Socket socket; 
    private InputStream mInputStream;                
    private PrintWriter mPrintWriter; 
    private static final String SERVER_IP   = "192.168.1.24"; 
    private static final int    SERVER_PORT = 6000; 
     
    public SocketClient() 
    { 
 
    } 
     
    public boolean connection() 
    { 
        boolean bRet = false; 
        try 
        { 
            //創建一個客戶端連接 
            InetAddress ia = InetAddress.getByName(SERVER_IP); 
            socket = new Socket(ia, SERVER_PORT); 
             
            //獲取這個客戶端連接SOCKET的輸入輸出 
            mPrintWriter = new PrintWriter(socket.getOutputStream(), true); 
            mInputStream = socket.getInputStream(); 
             
            bRet = true; 
        } catch (Exception e) 
        { 
            // TODO: handle exception 
        } 
             
        return bRet; 
    } 
     
    //發送消息 
    public void sendMsg(String msg) 
    { 
        mPrintWriter.print(msg); 
        mPrintWriter.flush(); 
    } 
     
    //讀取消息 
    public String readMsg() 
    { 
        String msgString = ""; 
        try 
        { 
            byte buffer[] = new byte[1024]; 
             
            int reCount = mInputStream.read(buffer); 
             
            msgString = EncodingUtils.getString(buffer, "GB2312"); 
             
        } catch (Exception e) 
        { 
            // TODO: handle exception 
        } 
         
        return msgString; 
    } 
     
     
    public void close() 
    { 
        try 
        { 
            socket.close(); 
        } catch (Exception e) 
        { 
            // TODO: handle exception 
        } 
    } 

主:
[java] 
private android.view.View.OnClickListener btnClickListener = new android.view.View.OnClickListener() 
    { 
         
        @Override 
        public void onClick(View v) 
        { 
            int id = v.getId(); 
            switch (id) 
            { 
            case R.id.btn: 
            { 
                SocketClient socketClient = new SocketClient(); 
                socketClient.connection(); 
                socketClient.sendMsg("123"); 
                socketClient.sendMsg("123"); 
                socketClient.sendMsg("123"); 
                socketClient.sendMsg("123"); 
                String r = socketClient.readMsg(); 
                socketClient.close(); 
                Toast.makeText(SocketActivity.this, r, Toast.LENGTH_LONG).show(); 
            } 
                break; 
            case R.id.btn_server: 
            { 
                SocketServer socketServer = new SocketServer(); 
                socketServer.startServer(); 
                socketServer.recv(); 
                socketServer.close(); 
            } 
                break; 
            default: 
                break; 
            } 
        } 
    }; 
作者:KnowHeart

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved