SOCKET之Send和Recv理解

2021-07-06 08:42:37 字數 552 閱讀 1089

int send(socket s,

const char *buf,

int len,

int flags);

引數描述: 同步

socket

的send函式的執行流程如下:

如果len大於傳送緩衝區剩餘空間大小(不足放入剩餘傳送緩衝區),send就一直 等待協議把s傳送緩衝區中的資料傳送完;

如果len小於傳送緩衝區剩餘空間大小,就僅僅把buf中的資料copy到傳送緩衝區的剩餘空間裡(send函式返回時並不代表send把s的緩衝區的資料(buf)傳到連線的另一端,而是協議傳輸的,send僅僅是把buf中的資料copy到s的傳送緩衝區的剩餘空間中)。

recv

函式:

int recv (socket s,

char* buf

,int len,

int flags);

引數描述: 同步

socket

的recv函式的執行流程如下:

資料參考整理自

socket之send和recv原理剖析

當建立乙個tcp scoket 物件的時候會有乙個傳送緩衝區和接收緩衝區,這個傳送和接受快取區指的就是記憶體中的一片空間 send是不是直接把資料發給伺服器?不是,要想傳送資料必須通過網絡卡傳送資料,應用程式是無法直接通過網絡卡傳送資料的,他需要呼叫作業系統介面,也就是說,應用程式把資料先寫入到快取...

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小於傳送緩衝...