大量資料的tcp的recv

2021-06-25 17:18:40 字數 627 閱讀 7814

最近在調程式的時候,發現傳送端傳送乙個119136個char的記憶體的時候,在接收端不能全部接收,

於是,通過除錯發現,必須在接收端多次的recv以後,進行拼接:

**如下:

char lenbuf[4];

int ilen; 

//接收資料

int bytes;

//先接受前面的四位訊息體長度

if((bytes=recv(clientsocket,lenbuf,sizeof(lenbuf),0))==socket_error)

else }

//這個長度包含了前面接收的4個byte的長度

//用於放內容的長度

memcpy( &ilen, lenbuf, sizeof(ilen) );

char *buf=(char *)malloc((ilen+1)*sizeof(char));

//第二次接收的話,就從下面的buf開始了,已經拋掉了buf長度的

//如果資料報很大的話,需要多次recv

int irecv =0;

if((bytes=recv(clientsocket,buf,(ilen+1),0))==socket_error)

else

else}}

TCP協議下的recv函式

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

TCP通訊,recv接收資料需要注意的地方?

關於tcp通訊中,recv函式接收資料大小的問題,之前一直覺得,只要是客戶端與伺服器一發一收的模式,那麼recv接收的資料大小一定是函式中指定的資料大小。這次寫了客戶端與伺服器通訊的程式,在這上面栽了乙個大跟斗。程式功能如下 通過客戶端與伺服器的通訊,實現檔案的傳輸,客戶端每次傳送1k的資料,伺服器...

深入剖析TCP協議的send與recv

深入剖析tcp協議的send與recv 一 滑動視窗的概念 tcp資料報的tcp頭部有乙個window欄位,它主要是用來告訴對方自己能接收多大的資料 注意只有tcp包中的資料部分占用這個空間 這個欄位在通訊雙方建立連線時協商確定,並且在通訊過程中不斷更新,故取名為滑動視窗。有了這個字段,資料傳送方就...