java網絡編程TCP傳輸—流操作—服務端反饋與客戶端接收


  在讀取完流后,服務端會向客戶端返回一些數據,告訴客戶端,已經寫完了。

在這里和”流操作—拿到源后的寫入動作“差不多,客戶端同樣以byte與Buffered兩種緩沖讀取作為例子,同時,。也是希望大家給補充。

1.利用OutputStream向客戶端回寫,客戶端用byte作為緩沖接收

  向客戶端回寫:

1 //獲取socket輸出流,將上傳成功字樣傳給客戶端
2         OutputStream out=s.getOutputStream();
3         out.write("上傳成功".getBytes());

  客戶端接收:

1 //讀取服務端返回的數據
2         InputStream in=s.getInputStream();
3         
4         byte [] bufIn=new byte[1024];
5         
6         int lenIn=in.read(buf);
7         
8         String text=new String(buf,0,lenIn);
9         System.out.println(text);

 

2.利用PrintWriter向客戶端回寫,客戶端用Buffered作為緩沖接收

  向客戶端回寫:  

1 //向客戶端返回數據,用PrintWriter
2         PrintWriter out =new PrintWriter(s.getOutputStream(),true);
3         
4         out.println("上傳成功");

  客戶端接收

1 //讀取服務端返回的對象
2         BufferedReader bufrIn =new BufferedReader(new InputStreamReader(s.getInputStream()));
3         String str=bufrIn.readLine();
4         System.out.println(str);

 

區別:  

  1.PrintWriter作為一個便捷的字節流與字符流之間的轉換工具,已經封裝了轉換的方法,直接使用它回寫的時候,不用再使用getBytes()轉換成字節流。

  2.在接受數據時,如果用byte數組接收,將得到的字節流寫入數組后,得把它轉化為一個String的對象,用String(數組名,第一個索引,長度),而用緩沖流接收時,需要用InputStreamReader轉化,但是最后直接賦值給一個是String類型的變量就好了。綜合來說,還是第二哥方法比較方便。

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM