C C Socket關閉Nagle演算法

2021-10-08 19:35:18 字數 728 閱讀 5680

tcp_nodelay is option given to setsockopt system call:

socket程式設計中,tcp_nodelay選項是用來控制是否開啟nagle演算法,該演算法是為了提高較慢的廣域網傳輸效率,減小小分組的報文個數,完整描述:

該演算法要求乙個tcp連線上最多只能有乙個未被確認的小分組,在該小分組的確認到來之前,不能傳送其他小分組。

這裡的小分組指的是報文長度小於mss(max segment

size)長度的分組(mss是在tcp握手的時候在報文選項裡面進行通告的大小,主要是用來限制另一端傳送資料的長度,防止ip資料報被分段,提高效率,一般是鏈路層的傳輸最大傳輸單元大小減去ip首部與tcp首部大小)。

如果小分組的確認ack一直沒有回來,那麼就可能會觸發tcp超時重傳的定時器。

**

int nagle_status =1;

int result =

setsockopt

(sock,

//socket的檔案描述符

ipproto_tcp,

tcp_nodelay,

(char*)

&nagle_status,

sizeof

(int))

;// 1 - on, 0 - off

if(result <0)

setsocket的文件

C C socket程式設計學習筆記

socket 是 套接字 的意思,是計算機之間進行通訊的一種約定,也可以認為是一種技術。學習 socket,就是學習計算機之間如何通訊,並能夠用程式語言開發出實用的程式。同時學習linux和windows的原因 大多數專案是在linux下開發伺服器端,而在windows下開發客戶端,需要經常在兩大平...

linux下C C socket程式設計

簡單的linux下socket程式設計,分別基於tcp和udp協議實現的簡單程式 linux下socket程式設計可以概括為以下幾個函式的運用 流程 server include include include include include int main int argc,char argv ...

C C socket網路程式設計掃盲篇

socket 是 套接字 的意思,是計算機之間進行通訊的一種約定,也可以認為是一種技術。通過 socket 這種約定,一台計算機可以接收其他計算機的資料,也可以向其他計算機傳送資料。學習 socket,就是學習計算機之間如何通訊,並能夠用程式語言開發出實用的程式。計算機分布在世界各地,要想和它們通訊...