1.java.net.Socket;套接字、封裝了TCP通訊協議,使用它可以基於TCP與遠端電腦上的服務端應用程式鏈接併進行通訊。 實例化Socket就是與伺服器端建立連接的過程。這裡需要傳入兩個參數來指定服務端地址信息: 參數1:伺服器端電腦地址 參數2:運行在伺服器電腦上的服務端應用程式打 ...
1.java.net.Socket;套接字、封裝了TCP通訊協議,使用它可以基於TCP與遠端電腦上的服務端應用程式鏈接併進行通訊。
實例化Socket就是與伺服器端建立連接的過程。這裡需要傳入兩個參數來指定服務端地址信息:
參數1:伺服器端電腦地址
參數2:運行在伺服器電腦上的服務端應用程式打開的服務埠
通過IP可以找到服務端電腦,在通過埠可以連接到運行在服務端極端及上的服務端應用程式。由於實例化就是連接過程,若服務端咩有響應,這裡實例化Socket會拋出異常。
Socket提供方法:
OutputStream getOutputStream()
通過Socket獲取的輸入流寫出的位元組都會通過網路發送給遠端電腦。這裡就等於發送給服務端。
2. 運行在服務端的java.net.ServerSocket;
主要有兩個作用:
1.向系統申請對外的服務埠,客戶端Socket就是通過這個埠與伺服器程式建立連接的。
2.監聽該服務埠,一旦一個客戶端Socket通過該埠嘗試建立連接,serverSocket就會感知並實例化一個Socket與該客戶端進行通訊。
ServerSocket提供方法:
Socket accept()
該方法時一個阻塞方法,用於監聽服務埠,直到一個客戶端連接上為止。這裡會返回一個Socket,通過這個Socket就可以與客戶端進行通訊了。
通過Socket獲取輸入流,讀取的數據就是來自遠端電腦發送過來的數據。這裡相當於讀取的時客戶端發送過來的數據;
InputStream in = socket.getInputStream();
當使用緩衝流讀取一行來自客戶端發送過來的字元串過程中,br.readLine方法會一直阻塞直到客戶端斷開連接,那麼客戶端的系統不同這裡的反應也不同。當Windows的客戶端斷開時,方法會拋出異常當Linux的客戶端斷開時方法會返回null
我是初學者,如有更新不好的,歡迎這位大神指出,謝謝大家!
更多精彩以後更新,轉載註明!