1. 程式人生 > >關於java基礎部分的網路程式設計(Socket)中的io流問題的理解

關於java基礎部分的網路程式設計(Socket)中的io流問題的理解

先上兩段簡單程式碼片段:

Socket:

Socket s=new Socket("127.0.0.1",10006);
BufferedReader br=new BufferedReader(

new InputStreamReader(s.getInputStream()));

ServerSocket:

ServerSocket ss=new ServerSocket(10006);
Socket s=ss.accept();

PrintStream ps=new PrintStream(s.getOutputStream());

對於紅色字型標註的地方是否有人同我一樣感到困惑,對於Socket內的br是用來接收伺服器端傳入的快取,為什麼是使用

s.getInputStream()的輸入流?同樣在ServerSocket的服務端的ps是伺服器端對客戶端的輸出的快取,為什麼使用的是

s.getOutputStream()的輸出流?當搞明白後下面我對Socket的通訊做一個介紹:

Socket客戶端:

當客戶端向伺服器端發出連線請求時,生成一個Socket物件(s1)

ServerSocket伺服器端:

當伺服器端接受到來自客戶端的連線請求時,ServerSocket端也會建立一個對應的客戶端的Socket物件(s2

因此對於客戶端與伺服器端的連線通訊方式是通過s1s2之間連線進行通訊的,見圖


綜上所述,僅是新手學習個人理解,如果有誤或錯誤,歡迎指出,不甚感激!