Android 的網路程式設計


android的網路程式設計分為2種:基於socket的,和基於http協定的。
 
基於socket的用法

  伺服器端:

  先啟動一個伺服器端的socket ServerSocket svr = new ServerSocket(8989);

  開始偵聽請求         Socket s = svr.accept();

  取得輸入和輸出        DataInputStream dis = new DataInputStream(s.getInputStream());

                 DataOutputStream dos = new DataOutputStream(s.getOutputStream());

  Socket 的交互通過流來完成,即是說傳送的位元組流,因此任何檔都可以在上面傳送。誰打開的記得要關上。

  用DataInputStream/DataOutputStream來進行包裝是因為我們想要他們對基底資料型別的讀寫功能readInt(),writeInt(),readUTF(),writeUTF()等等。

  用戶端:

  發起一個socket連接      Socket s = new Socket("192.168.1.200",8989);

  取得輸入和輸出        DataInputStream dis = new DataInputStream(s.getInputStream());

                 DataOutputStream dos = new DataOutputStream(s.getOutputStream());

  之後就可以相互通信了。誰打開的記得要關上。

基於Http協定

  一般是發送請求到某個應用伺服器。此時需要用到HttpURLConnection

  先取得HttpURLConnection urlConn = new URL("http://www.google.com").openConnection();

  設置標誌 

    urlConn.setDoOutput(true); urlConn.setDoInput(true);//post的情況下需要設置DoOutput為true

    urlConn.setRequestMethod("POST");

    urlConn.setUseCache(false);//設置是否用緩存

    urlConn.setRequestProperty("Content-type","application/x-www-form-urlencoded");//設置content-type

  獲得輸出流,便於想伺服器發送資訊。

    DataOutputStream dos = new DataOutputStream(urlConn.getOutputStream());

  望流裡面寫請求參數

    dos.writeBytes("name="+URLEncoder.encode("chenmouren","gb2312");

    dos.flush();dos.close();//發送完後馬上關閉。

  獲得輸入流,取資料

    BufferReader reader = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));

    reader.readLine();//用 !=null來判斷是否結束

    reader.close();

  讀完了記得關閉connection  urlConn.disconnect();

流程記錄就到此為止。






[本日志由 FindSome 于 2013-03-14 09:58 AM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
相關日誌:

评论: 0 | 引用: 0 | 查看次数: 2101
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 关闭 | [img]标签 关闭