網絡編程----------SOCKET編程實現簡單的TCP協議
首先我們須要大致了解TCP的幾點知識:
1.TCP的特點:面向連接的可靠性傳輸
2.TCP的三次握手建立連接和四次揮手釋放連接。但為什麽TCP要三次握手建立連接呢?
答:由於兩次握手無法保證可靠性。若最後一次失敗,則client又會又一次發起建立連接的請求,那麽必定會消耗資源,而三次握手明顯可以達到這個目的。
3.TCP為何是面向連接的?
答:由於TCP是傳輸層的協議,傳輸層的下層是網絡層。IP協議就是網絡層的協議,可是IP僅僅提供盡力而為的的傳輸機制;而傳輸層的上層為應用層,它負責將下層的數據拿出來,所以此時數據的可靠性得責任保障毋庸置疑就落到了傳輸層的TCP協議上(同層的udp不負責數據的檢錯等功能)。而可靠性保障的前提條件就是面向連接。
4.TCP的可靠性傳輸機制由誰來保證?
答:TCP報文段格式中有32位序號和32位確認序號兩部分,所以可靠性明顯是由這兩部分來保證的。
5.與TCP相關的定時器有哪些?
答:有四種:(1)重傳定時器:解決超時重傳的問題
(2)堅持定時器:解決零窗體大小導致的死鎖問題
(3)保活定時器:解決兩個TCP連接間出現長時間的沒有傳輸數據的情況
(4)2MSL定時器:測量一個連接處於TIME-WAIT的時間。(當server斷開連接的時候,若新的client再去請求斷port連接,那麽server斷會處在TIME-WAIT等待原client再次請求連接。
好了。以上就是有關TCP的小點但有必要知道的。
哈哈!
以下,我們利用socket進行簡單的TCP編程
那我們常說的socket究竟是什麽呢?沒錯就是我們熟知的------------》IP地址+port號=socket
首先先來學習一下主要的函數
好了!正式貼出代碼了。
服務器端tcp_server.c
Makefile文件:
客戶端代碼tcp_client.c:
網絡編程----------SOCKET編程實現簡單的TCP協議