Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android的TCP和UDP傳輸 簡單程序

Android的TCP和UDP傳輸 簡單程序

編輯:關於Android編程

TCP UDP時常用的網絡通信方式,具體內容及傳輸方式可以百度搜索這裡不再贅述,

我做的主要是把源碼發出來,給大家參考。

首先,TCP建立連接之後,通信雙方都同時可以進行數據的傳輸,其次,他是全雙工的;在保證可靠性上,采用超時重傳和捎帶確認機制。

常用的tcp連接圖\

服務器端代碼<喎?/kf/ware/vc/" target="_blank" class="keylink">vc3Ryb25nPjwvcD4KPHA+PHN0cm9uZz48L3N0cm9uZz48cHJlIGNsYXNzPQ=="brush:java;"> try { Boolean endFlag = false; ServerSocket ss = new ServerSocket(12345); while (!endFlag) { // 等待客戶端連接 Socket s = ss.accept(); BufferedReader input = new BufferedReader(newInputStreamReader(s.getInputStream())); //注意第二個參數據為true將會自動flush,否則需要需要手動操作output.flush() PrintWriter output = newPrintWriter(s.getOutputStream(),true); String message = input.readLine(); Log.d("Tcp Demo", "message from Client:"+message); output.println("message received!"); //output.flush(); if("shutDown".equals(message)){ endFlag=true; } s.close(); } ss.close(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } 客戶端代碼:


    try {  
                Socket s = new Socket("localhost", 12345);  
                // outgoing stream redirect to socket  
                OutputStream out = s.getOutputStream();  
                // 注意第二個參數據為true將會自動flush,否則需要需要手動操作out.flush()  
                PrintWriter output = new PrintWriter(out, true);  
                output.println("Hello IdeasAndroid!");  
                BufferedReader input = new BufferedReader(newInputStreamReader(s  
                        .getInputStream()));  
                // read line(s)  
                String message = input.readLine();  
                Log.d("Tcp Demo", "message From Server:" + message);  
                s.close();  
       
            } catch (UnknownHostException e) {  
                e.printStackTrace();  
            } catch (IOException e) {  
                e.printStackTrace();  
            } 
UDP連接圖\

UDP服務器端代碼:

    // UDP服務器監聽的端口  
            Integer port = 12345;  
            // 接收的字節大小,客戶端發送的數據不能超過這個大小  
            byte[] message = new byte[1024];  
            try {  
                // 建立Socket連接  
                DatagramSocket datagramSocket = new DatagramSocket(port);  
                DatagramPacket datagramPacket = new DatagramPacket(message,  
                        message.length);  
                try {  
                    while (true) {  
                        // 准備接收數據  
                        datagramSocket.receive(datagramPacket);  
                        Log.d("UDP Demo", datagramPacket.getAddress()  
                                .getHostAddress().toString()  
                                + ":" + new String(datagramPacket.getData()));  
                    }  
                } catch (IOException e) {  
                    e.printStackTrace();  
                }  
            } catch (SocketException e) {  
                e.printStackTrace();  
            } 

客戶端代碼:

    public static void send(String message) {  
            message = (message == null ? "Hello IdeasAndroid!" : message);  
            int server_port = 12345;  
            DatagramSocket s = null;  
            try {  
                s = new DatagramSocket();  
            } catch (SocketException e) {  
                e.printStackTrace();  
            }  
            InetAddress local = null;  
            try {  
                // 換成服務器端IP  
                local = InetAddress.getByName("localhost");  
            } catch (UnknownHostException e) {  
                e.printStackTrace();  
            }  
            int msg_length = message.length();  
            byte[] messagemessageByte = message.getBytes();  
            DatagramPacket p = new DatagramPacket(messageByte, msg_length, local,  
                    server_port);  
            try {  
                s.send(p);  
            } catch (IOException e) {  
                e.printStackTrace();  
            }  
        } 



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