網絡協議之二

基於socket的用法 緩存

  服務器端: 服務器

  先啓動一個服務器端的socket ServerSocket svr = new ServerSocket(8989); app

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

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

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

  Socket 的交互經過流來完成,便是說傳送的字節流,所以任何文件均可以在上面傳送。誰打開的記得要關上。 code

  用DataInputStream/DataOutputStream來進行包裝是由於咱們想要他們對基本數據類型的讀寫功能readInt(),writeInt(),readUTF(),writeUTF()等等。 orm

  客戶端: get

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

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

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

  以後就能夠相互通訊了。誰打開的記得要關上。

  基於Http協議

  通常是發送請求到某個應用服務器。此時須要用到HttpURLConnection

  先取得HttpURLConnection urlConn = new URL(http://www.nbtarena.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();

  流程記錄就到此爲止。

相關文章
相關標籤/搜索