當前位置:首頁 » 文件管理 » socket緩存大小

socket緩存大小

發布時間: 2025-03-15 15:10:05

linux下socket接收緩沖區有多大如何查看和修改,望高手賜教

int buflen = 65536*10;
設置讀緩存大小
if(0!=setsockopt(m_sendUdpSock,SOL_SOCKET,SO_RCVBUF,&buflen,4))
{
return OS_ERROR;

}
設置寫緩存大小
if(0!=setsockopt(m_sendUdpSock,SOL_SOCKET,SO_SNDBUF,&buflen,4))
{
return OS_ERROR;

}
socklen_t getnumlen=4;
讀取寫緩存大小
if(0!=getsockopt(g_sendUdpSock,SOL_SOCKET,SO_RCVBUF,&buflen,&getnumlen))
{
printf("\n%s\n",strerror(errno));
return OS_ERROR;

}

❷ 如何得知socket的緩存大小,這個緩存是否有上限,是否會溢出

一:如何得知socket的緩沖大小?
通過socket選項可以獲得socket的緩沖大小。(以下是python代碼,sock為socket對象)
sock.getsockopt(SOL_SOCKET,SO_RCVBUF):獲取接收緩沖區的大小
sock.getsockopt(SOL_SOCKET,SO_SNDBUF):獲得發送緩沖區的大小
註:UDP協議在內核實現中沒有發送緩沖區。

二:這個緩沖是否有上限?
緩沖區存在上限,沒一個socket對象的緩沖區有上限,系統中所有的socket緩沖區的總大小也存在上限。

三:是否會溢出?
TCP協議是可靠的有序的位元組流協議,其可靠性與接收端的滑動窗口機制有關,而滑動窗口和TCP的接收緩沖區有關。
TCP協議的緩沖區不會溢出,如果接收緩沖區已滿,則通告窗口為0,不能在接收發送端發過來的數據。如果發送緩沖區已滿(則可以說明對端的接收緩沖區一定已滿),應用層的send調用阻塞(採用阻塞式IO)。所以說TCP協議的緩沖區不會溢出。
UDP協議的緩沖區會溢出,UDP協議在實現上沒有發送緩沖區,接收緩沖區存在上限,當UDP的接收緩沖區達到上限時,以後接收到的數據報直接丟棄,這也是UDP協議不可靠的一個原因。
-----------------------------------------------------------------------------------------------------------
推薦你看一下陶輝的」高性能網路編程「系列,肯定會受益匪淺。

熱點內容
芬蘭編程教育 發布:2025-03-15 18:59:46 瀏覽:426
網際網路的伺服器地址 發布:2025-03-15 18:53:01 瀏覽:892
手機實體店什麼配置好 發布:2025-03-15 18:32:35 瀏覽:168
攜帶型電腦的原始密碼是什麼 發布:2025-03-15 18:25:52 瀏覽:798
壓縮空間小 發布:2025-03-15 18:14:05 瀏覽:848
env的腳本 發布:2025-03-15 18:01:24 瀏覽:730
圖片上傳雲端 發布:2025-03-15 17:37:26 瀏覽:460
郵件伺服器ip池 發布:2025-03-15 17:31:51 瀏覽:398
php空間免費 發布:2025-03-15 17:09:39 瀏覽:965
安卓現在優化的怎麼樣 發布:2025-03-15 17:06:10 瀏覽:82