recv接收数据的问题
琴乐音 2007-12-21 09:41:57 我在调用recv时 , 有时会取出的数据不完整, 就算我用大缓冲空间, 一次读socket的数据, 读的有时对,有时不对。 也就是recv返回的值和buf不等,小于buffer,而且前提是要接受的数据大于buffer。 这个是什么原因导致的呢?
while(1){
if(contentsize > SOCKET_MAX_BUF_LEN){
iRecvResult = recv(socket, recBuf, SOCKET_MAX_BUF_LEN, 0);
if(iRecvResult < recBuf){
//error
}
int isWrite = writeDownLoadFile(updateTempFile, recBuf, iRecvResult);
if(isWrite == -1){
syslog(LOG_INFO, "write temp file fail when update logic file\n");
}
memset(recBuf, 0, SOCKET_MAX_BUF_LEN);
contentsize -= iRecvResult;
}
else{
iRecvResult = recv(socket, recBuf, contentsize, 0);
if(iRecvResult < recBuf){
//error
}
int isWrite = writeDownLoadFile(updateTempFile, recBuf, iRecvResult);
if(isWrite == -1){
syslog(LOG_INFO, "write temp file fail when update logic file\n");
}
break;
}
}