基於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();
流程記錄就到此爲止。