標籤:cti 客戶 位元組 write int stream 用戶端 資料 property
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來進行封裝是因為我們想要他們對基礎資料型別 (Elementary Data Type)的讀寫功能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();
流程記錄就到此為止。
Android 的網路編程