Android的網路與通訊(一)

來源:互聯網
上載者:User

標籤:android   style   http   io   ar   os   使用   sp   java   

Android平台有三種網路介面可以使用,他們分別是:java.net.*(標準Java介面)、Org.apache介面和Android.net.*(Android網路介面)。下面分別介紹這些介面的功能和作用。
1.標準Java介面
java.net.*提供與連網有關的類,包括流、資料包通訊端(socket)、Internet協議、常見Http處理等。比如:建立URL,以及URLConnection/HttpURLConnection對象、設定連結參數、連結到伺服器、向伺服器寫資料、從伺服器讀取資料等通訊。這些在Java網路編程中均有涉及,我們看一個簡單的socket編程,實現伺服器回傳用戶端資訊。
服務端:

public class Server implements Runnable{ 

@Override 

public void run() { 

        Socket socket = null; 

try { 

            ServerSocket server = new ServerSocket(18888); 

//迴圈監聽用戶端連結請求 

while(true){ 

System.out.println("start..."); 

//接收請求 

                socket = server.accept(); 

                System.out.println("accept..."); 

//接收用戶端訊息 

                BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); 

                String message = in.readLine(); 

//發送訊息,向用戶端 

                PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true); 

                out.println("Server:" + message); 

//關閉流 

                in.close(); 

                out.close(); 

            } 

        } catch (IOException e) { 

            e.printStackTrace(); 

        }finally{ 

if (null != socket){ 

try { 

                    socket.close(); 

                } catch (IOException e) { 

                    e.printStackTrace(); 

                } 

            } 

        } 

    } 

//啟動伺服器 

public static void main(String[] args){ 

        Thread server = new Thread(new Server()); 

        server.start(); 

    } 

用戶端,MainActivity

public class MainActivity extends Activity { 

private EditText editText; 

private Button button; 

/** Called when the activity is first created. */ 

@Override 

public void onCreate(Bundle savedInstanceState) { 

super.onCreate(savedInstanceState); 

        setContentView(R.layout.main); 

        editText = (EditText)findViewById(R.id.editText1); 

        button = (Button)findViewById(R.id.button1); 

        button.setOnClickListener(new OnClickListener() { 

@Override 

public void onClick(View v) { 

                Socket socket = null; 

                String message = editText.getText().toString()+ "\r\n" ; 

try { 

//建立用戶端socket,注意:不能用localhost或127.0.0.1,Android模擬器把自己作為localhost 

                    socket = new Socket("<span style="font-weight: bold;">10.0.2.2</span>",18888); 

                    PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter 

                            (socket.getOutputStream())),true); 

//發送資料 

                    out.println(message); 

//接收資料 

                    BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); 

                    String msg = in.readLine(); 

if (null != msg){ 

                        editText.setText(msg); 

                        System.out.println(msg); 

                    } 

else{ 

                        editText.setText("data error"); 

                    } 

                    out.close(); 

                    in.close(); 

                } catch (UnknownHostException e) { 

                    e.printStackTrace(); 

                } catch (IOException e) { 

                    e.printStackTrace(); 

                } 

finally{ 

try { 

if (null != socket){ 

                            socket.close(); 

                        } 

                    } catch (IOException e) { 

                        e.printStackTrace(); 

                    } 

                } 

            } 

        }); 

    } 

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.