程式設計模型
TCP程式設計模型如下
TCP伺服器的工作過程如下:
- 伺服器建立一個專門的“檔案描述符”來監聽來自用戶端的“三次握手”,然後建立連結
- 連結建立成功後,伺服器會配置設定一個專門的“通信檔案描述符”,用于實作與該用戶端的通信
以上通信模型是由于TCP本身的特點:面向連接配接的,可靠的,位元組流通信方式
通信過程
伺服器:
- 建立套接字,傳回套接字的檔案描述符
skfd = socket()
- 将套接字檔案描述符、ip、端口号綁定在一起,建立固定的對應關系
bind()
- 将套接字檔案描述符轉為被動描述符,用于被動監聽用戶端連結
listen()
- 與用戶端三次握手成功,傳回一個通信描述符
fd=accept()
- 伺服器向用戶端發送、接收資料
,write(fd);send(fd)
read(fd);recv(fd);
- 四次揮手斷開連接配接,可以由任意方發起
close(fd);shutdown(fd)
- 建立套接字檔案
skfd = socket()
- 主動向伺服器發起連結請求,三次握手OK後即連結成功
connet(skfs..)
- 用戶端向伺服器發送資料
write(skfd);send(skfd)
- 用戶端接收伺服器資料
read(skfd);recv(skfd)
- 四次揮手斷開連結,可以由任意方發起
close(fd);shutdown(fd)