套接字 Socket

套接字(socket)是一個抽象層,應用程序可以通過它發送或接收數據,可對其進行像對文件一樣的打開、讀寫和關閉等操作。套接字允許應用程序將I/O插入到網絡中,並與網絡中的其他應用程序進行通信。網絡套接字是IP地址與端口的組合。

傳輸層實現端到端的通信,因此,每一個傳輸層連接有兩個端點。那麼,傳輸層連接的端點是什麼呢?不是主機,不是主機的IP地址,不是應用進程,也不是傳輸層的協議端口。 [2] 傳輸層連接的端點叫做套接字(socket)。根據RFC793的定義:端口號拼接到IP地址就構成了套接字。所謂套接字,實際上是一個通信端點,每個套接字都有一個套接字序號,包括主機的IP地址與一個16位的主機端口號,即形如(主機IP地址:端口號)。例如,如果IP地址是210.37.145.1,而端口號是23,那麼得到套接字就是(210.37.145.1:23)。 [1]
總之,套接字Socket=(IP地址:端口號),套接字的表示方法是點分十進制的IP地址後面寫上端口號,中間用冒號或逗號隔開。每一個傳輸層連接唯一地被通信兩端的兩個端點(即兩個套接字)所確定。 [2]
套接字可以看成是兩個網絡應用程序進行通信時,各自通信連接中的一個端點。通信時,其中的一個網絡應用程序將要傳輸的一段信息寫入它所在主機的Socket中,該Socket通過網絡接口卡的傳輸介質將這段信息發送給另一臺主機的Socket中,使這段信息能傳送到其他程序中。因此,兩個應用程序之間的數據傳輸要通過套接字來完成。

Java 網絡編程 之 socket 的用法與實現

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章