recv和send的真正作用

2021-06-04 06:25:21 字數 635 閱讀 8270

區分應用層的

recv

,send

和核心中套接字的真正讀取資料,要知道,

tcp協議層是執行與核心當中,而通訊是網絡卡直接的通訊,因此,不要認為,沒有呼叫

recv

就不會有資料,不管調沒呼叫

recv

,只要對方

send

,線路上有資料,那麼,協議就會從網絡卡裡面讀取該資料進核心的

socket

緩衝區中,而呼叫

recv

的真正作用只是把資料從

socket

核心緩衝區中把資料拷貝到應用層指定的

buffer

中,僅此而已,對協議完全沒影響,同理,因為

socket

預設是全緩衝,如果沒有

setsocketopt

的話,只有當

socket

核心緩衝區中的資料滿了之後才會執行真正的傳送資料,才會把資料從

socket

的緩衝區中通過網絡卡把資料傳送出去,其實就是執行真正的

io操作一樣,因此,

send

的操作,只是把應用層的資料拷貝到

socket

的緩衝區中而已,並不表示把資料傳送出去了,明白這幾點。

recv函式和send函式

int recv socket s,char far buf,int len,int flags 不論是客戶還是伺服器應用程式都用recv函式從tcp連線的另一端接收資料。該函式的第乙個引數指定接收端套接字描述符 第二個引數指明乙個緩衝區,該緩衝區用來存放recv函式接收到的資料 第三個引數指明bu...

recv函式和send函式

recv函式 int recv socket s,char far buf,int len,int flags 不論是客戶還是伺服器應用程式都用recv函式從tcp連線的另一端接收資料。該函式的第乙個引數指定接收端套接字描述符 第二個引數指明乙個緩衝區,該緩衝區用來存放recv函式接收到的資料 第三...

send函式和recv函式

1.send 函式 int send socket s,const char far buf,int len,int flags 不論是客戶還是伺服器應用程式都用send函式來向tcp連線的另一端傳送資料。客戶程式一般用send函式向伺服器傳送請求,而伺服器則通常用send函式來向客戶程式傳送應答。...