關於java基礎部分的網路程式設計(Socket)中的io流問題的理解
阿新 • • 發佈:2019-02-03
先上兩段簡單程式碼片段:
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)
因此對於客戶端與伺服器端的連線通訊方式是通過s1與s2之間連線進行通訊的,見圖
綜上所述,僅是新手學習個人理解,如果有誤或錯誤,歡迎指出,不甚感激!