第二個問題是理解recv函數的工作流程。它有數據要讀取。雖然妳設置了4000的大小,但如果當時只收到3600字節,也會返回,所以readLen是3600,不是4000。而後壹句p = p+4000;也應該改成p = p+readLen;
為了獲得想要的效果,您應該將服務器更改為
char * p =(char *)raw data buffer;//rawDataBuffer是無符號的int類型。
int n = 0;
while(n & lt;16 * 4000)
{
readLen += recv(sockConn,p,4000,0);
p = p+readLen;
}
close socket(sock conn);
只有這樣才能收到完整的數據。