tcp是傳輸控制協議的簡稱,是tcp/ip體系中的面向連線的傳輸層協議,在網路中提供全雙工的、可靠的服務。在上一章節中可知,tcp通訊是通過套接字通訊機制實現的,具體為流式套接字,用來實現乙個面向連線,可靠的資料傳輸服務。目前較為流行的網路程式設計模型是客戶端、伺服器的通訊模式。伺服器和客戶端使用tcp通訊的流程如下圖8.1所示。
圖8.1 使用tcp時套接字程式設計流程
socket程式設計的基本函式有socket()、bind()、listen()、accept()、send()、sendto()、recv()以及recvfrom()等。結合上圖8.1,下面將簡單介紹上述函式的功能。
socket()用於建立乙個套接字,同時指定協議和型別。套接字(socket)是乙個允許通訊的「裝置」,兩個應用程式通過它完成資料的傳遞。
bind()將儲存在相應位址結構中的位址資訊與套接字進行繫結。它主要用於伺服器端。客戶端建立的套接字可以不繫結位址。
listen()表示監聽,在伺服器端程式成功建立套接字並與位址進行繫結之後,通過呼叫listen()將套接字設定為監聽模式(被動模式),準備接收客戶端的連線請求。
accept()表示接收,伺服器通過呼叫accept()等待並接收客戶端的連線請求。當建立好tcp連線後,該操作將返回乙個新的已連線套接字。
connect()表示連線,客戶端通過該介面向伺服器端的監聽套接字傳送連線請求。
send()和recv()兩個介面在tcp通訊過程中用於傳送和接收資料,也可以用在udp中。
sendto()和recvfrom()兩個介面一般用在udp通訊中,用於傳送和接收資料。
TCP協議及程式設計流程
面向連線 傳送端傳送次數與接收方接收次數無關 send將資料發入傳送緩衝區 recv同理接收至接收緩衝區 傳輸與接收的資料不會因send次數分開,資料是乙個整體,是乙個位元組流 tcp報頭結構 保證能到達 應答確認 超時重傳 保證不亂序 保證不失真 滑動視窗,擁塞控制 待完善,不要做參考 零視窗零視...
Linux下TCP網路程式設計流程
常見的兩種模型 c s模型 客戶端 伺服器端 和ptp 點對點 模型。下面為tcp網路流程程式設計兩台主機之間資料傳送的具體 示例。示例 檔案server.c include include include include include include include include void m...
TCP網路程式設計流程及Socket API基本用法
socket api基本用法 socket函式 int socket int domain,int type,intprotocol 包含標頭檔案 作用 建立乙個套接字用於通訊 domain af inet ipv4 af inet6 ipv6 type sock stream tcp sock d...