Socket的英文原義是"孔"或"插座"。通常也稱作"套接字",用於描述IP地址和端口,是一個通信鏈的句柄,
可以用來實現不同虛擬機或不同計算機之間的通信。
在Internet上的主機一般運行了多個服務軟件,同時提供幾種服務。每種服務都打開一個Socket,並綁定到一個端口上,不同的端口對應於不同的服務。
基於tcp 協議的套接字通信流程:
1). 服務器先用 socket 函數來建立一個套接字,用這個套接字完成通信的監聽。
2). 用 bind 函數來綁定一個端口號和 IP 地址。因為本地計算機可能有多個網址和 IP,每一個 IP 和端口有多個端口。需要指定一個 IP 和端口進行監聽。
3). 服務器調用 listen 函數,使服務器的這個端口和 IP 處於監聽狀態,等待客戶機的連接。
4). 客戶機用 socket 函數建立一個套接字,設定遠程 IP 和端口。
5). 客戶機調用 connect 函數連接遠程計算機指定的端口。
6). 服務器用 accept 函數來接受遠程計算機的連接,建立起與客戶機之間的通信。
7). 建立連接以后,客戶機用 write 函數向 socket 中寫入數據。也可以用 read 函數讀取服務器發送來的數據。
8). 服務器用 read 函數讀取客戶機發送來的數據,也可以用 write 函數來發送數據。
9). 完成通信以后,用 close 函數關閉 socket 連接。