當前位置:首頁 » 文件管理 » 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-04-30 23:50:29 瀏覽:90
xp共享怎麼設置密碼 發布:2025-04-30 23:50:24 瀏覽:155
租用電腦主機搭建伺服器 發布:2025-04-30 23:28:06 瀏覽:729
php子類調用父類方法 發布:2025-04-30 23:11:55 瀏覽:673
存檔加密id 發布:2025-04-30 22:20:50 瀏覽:741
mac搭建php環境 發布:2025-04-30 21:58:13 瀏覽:134
雅迪電動車配置有哪些 發布:2025-04-30 21:38:27 瀏覽:154
為什麼用文件存儲取代mysql 發布:2025-04-30 21:17:26 瀏覽:609
我的世界免費伺服器ip 發布:2025-04-30 20:41:26 瀏覽:772
華為雲相冊在哪裡找安卓11 發布:2025-04-30 20:19:59 瀏覽:271