一.面向連接的套接字Socket通信工作流程
為了實現服務器與客戶機的通信,服務器和客戶機都必須建立套接字。服務器與客戶機的工作原理可以用下面的過程來描述。
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 連接。
二. 面向無連接的套接字Socket通信工作流程
無連接的通信不需要建立起客戶機與服務器之間的連接,因此在程序中沒有建立連接的過程。進行通信之前,需要建立網絡套接字。服務器需要綁定一個端口,在這個端口上監聽接收到的信息。客戶機需要設置遠程 IP 和端口,需要傳遞的信息需要發送到這個 IP 和端口上。