socket之send和recv原理剖析

2021-10-01 05:51:37 字數 371 閱讀 9491

當建立乙個tcp scoket 物件的時候會有乙個傳送緩衝區和接收緩衝區,這個傳送和接受快取區指的就是記憶體中的一片空間

send是不是直接把資料發給伺服器?

不是,要想傳送資料必須通過網絡卡傳送資料,應用程式是無法直接通過網絡卡傳送資料的,他需要呼叫作業系統介面,也就是說,應用程式把資料先寫入到快取區,再有作業系統控制網絡卡把快取區的資料傳送給伺服器網絡卡

recv是不是直接從客戶端接收資料

不是,應用程式是無法直接通過網絡卡接收資料的,他需要呼叫作業系統介面,由作業系統通過網絡卡接收,把接收的資料寫入到接收快取區,應用程式再從接收快取區獲取客戶端的資料

傳送的資料是傳送到緩衝區

接收的資料是從緩衝區獲取

最終是由作業系統控制網絡卡完成

SOCKET之Send和Recv理解

int send socket s,const char buf,int len,int flags 引數描述 同步 socket 的send函式的執行流程如下 如果len大於傳送緩衝區剩餘空間大小 不足放入剩餘傳送緩衝區 send就一直 等待協議把s傳送緩衝區中的資料傳送完 如果len小於傳送緩衝...

socket為send和recv設定超時時間

linux和windows下用setsockopt設定so sndtimeo,so rcvtimeo的引數的一點區別 udp的socket在某些情況 如對方關閉時,本地可能sendto不出去資料,然後recvfrom就會被阻塞,這時就需要設定 這兩個引數的值提高程式質量。linux struct t...

socket中send函式和recv函式的理解

int send socket s,const char buf,int len,int flags 引數描述 同步 socket 的send函式的執行流程如下 如果len大於傳送緩衝區剩餘空間大小 不足放入剩餘傳送緩衝區 send就一直 等待協議把s傳送緩衝區中的資料傳送完 如果len小於傳送緩衝...