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

2021-07-02 04:21:01 字數 537 閱讀 1675

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函式

關於send其實我是要呼叫send函式,但是在乙個地方看到了下面的一段話 當呼叫該函式時,send先比較待傳送資料的長度len和套接字s的傳送緩衝區的長度,如果len大於s的傳送緩衝區的長度,該函式返回socket error 如果len小於或者等於s的傳送緩衝區的長度,那麼send先檢查協議是否正...

Socket中send函式的理解

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

socket程式設計中send函式引發的執行緒退出

在多執行緒程式設計中其中使用乙個執行緒來accept要連線的客戶端。同時在接受client的請求之後新建乙個執行緒來進行具體的操作。其操作包括向client端傳送一定位元組的資料,使用send 函式來進行操作。如果在傳送過程 現任何乙個client端的斷線,則整個程式都會退出。ssize t sen...