《TCP/IP網路程式設計》第4章 筆記&程式碼&註釋
阿新 • • 發佈:2018-12-05
TCP
TCP Transmission Control Protocol 傳輸控制協議,意為對資料傳輸過程的控制。
TCP/IP 協議棧
TCP/IP 協議棧分四層:
- 應用層
- TCP層/UDP層
- IP層
- 鏈路層
根據2.的TCP套接字還是UDP套接字收發資料,他們的協議棧各不相同。
鏈路層
物理連線領域標準化的結果,是最基本的領域,定義LAN、WAN、MAN等網路標準。
IP層
IP本身是面向訊息、不可靠的協議,每次傳輸資料他來選擇路徑,但並不一致,如若發生路徑錯誤,則會選擇其他路徑;若資料丟失,則無法解決。
TCP層/UDP層
TCP保證可靠的資料傳輸,他傳送資料時以IP層為基礎。
UDP則不保證資料傳輸的可靠性。
根據應用性質選擇使用TCP/UDP層。
應用層
根據程式特點性質決定伺服器和客戶端之間的資料傳輸規則。
基於TCP伺服器端/客戶端
socket() | bind() | listen() | accept() | read()/write() Linux recv()/send() Windows |
close() |
建立套接字 | 分配套接字地址 | 等待連線請求狀態 | 允許連線 | 資料交換 | 斷開連線 |
listen()進入等待連線請求狀態
SOCKET hServerSock;
//......
listen(hServerSock, 5);//Windows
第一個引數:套接字的控制代碼。
第二個引數,等待佇列的長度,這裡的5表示最多五個連結請求進入佇列。
實現迭代伺服器/客戶端
第一章中,伺服器處理了一次客戶端的連線請求就結束了執行,listen()中第二個引數沒有多大意義。
為了多次處理,需要編寫迭代伺服器端/客戶端。
回聲(echo)服務端/客戶端
socket() | bind() | listen() | accept() | read()/write() Linux recv()/send() Windows |
close() |
建立套接字 | 分配套接字地址 | 等待連線請求狀態(回到這裡) | 允許連線 | 資料交換 | 斷開連線(回到listen()執行後狀態) |
程式碼: