1. 程式人生 > >網絡編程----------SOCKET編程實現簡單的TCP協議

網絡編程----------SOCKET編程實現簡單的TCP協議

water 實現 保活定時器 log 超時重傳 color 斷開連接 超時 面向連接

首先我們須要大致了解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協議