Java語言Socket的基本概念

來源:酷知科普網 3.06W

Java語言Socket的基本概念

操作方法

(01)建立連線當需要建立網路連線時,必須有一臺機器執行一個程式,隨時等候連線,而另一端的程式這對其發出連線請求。這一點同電話系統類似——必須有一方撥打電話,而另一方必須等候電話連通。建立連線的過程為:(1)現在伺服器端生成一個ServerSocket例項物件,隨時監聽客戶端的連線請求。(2)當客戶端需要連線時,相應地要生成一個Socket例項物件,併發出連線請求,其中host引數指明該主機名,port#引數指明該主機埠號。(3)伺服器端通過accept()方法接收到客戶端的請求後,開闢一個介面與之進行連線,並生成所需的I/O資料流。(4)客戶端和伺服器端的通訊都是通過一對InputStream和OutputStream進行的,通訊結束後,兩端分別關閉對應的Socket介面。

(02)連線地址打電話時,呼叫方必須事先知道所需撥打的號碼,而程式建立網路連線時,也同樣需要知道地址或主機名稱。另外,網路連線還需要一個埠號(可以將其當作電話的分機號),連線到正確的主機之後,需要對該連線確認特定口令。某些情況下,還需要使用一個擴充套件號碼與網路計費系統相連,於是相應地要有一個特定埠號用於連線計費程式。

(03)埠號在TCP/IP系統中,埠號由16位二進位制整陣列成,即在0-65535之間。實際應用中,前1024個埠號已經預先定義為一些特定服務,因此一般不能使用,除非想同這些伺服器進行連線(如Telnet,SMTP,mail,ftp等)。在兩個程式連線之前,彼此之間必須達成一致,即由客戶端負責初始化連線,而伺服器隨時等候請求。只有客戶端和伺服器端指定埠號一致時連線才會建立。如果系統中兩個程式所用埠號不一致,這連線無法建立。

(04)網路連線模式在Java中,TCP/IP介面的連線是由包中的類實現的。如圖表示的是Socket連線過程中客戶端和伺服器端的工作原理。每個server端都擁有一個埠號,一臺機器上如果執行多個服務,這可能對應多個埠號。通訊結束後,兩端分別關閉對應的Socket介面,而不影響其他的埠。

Java語言Socket的基本概念
熱門標籤