- 论坛徽章:
- 0
|
int CSESocket::RecvData(char *p_fName, int p_iRecvLen, int p_iTimeout)
{
int iRet;
char strlog[200+1];
char strRev[CONTENT_LEN+1];
struct timeval timeout;
timeout.tv_sec = 30;
fd_set fdReads;
while(1)
{
FD_ZERO(&fdReads);
FD_SET(m_iSock,&fdReads);
iRet = select(m_iSock+1,&fdReads,NULL,NULL,&timeout);
if(iRet==-1)
{
return -1;
}
if(FD_ISSET(m_iSock,&fdReads))
{
//iRet = recv(m_iSock,p_strRecv,sizeof(strRev),0);
FILE *fpWeb;
fpWeb = fopen(p_fName,"w");
while (1)
{
memset(strRev, 0, sizeof(strRev));
iRet = recv(m_iSock,strRev,sizeof(strRev),0);
if (iRet == WSAECONNRESET || iRet == SOCKET_ERROR || iRet <= 0)
break;
fprintf(fpWeb,"%s",strRev);
fflush(fpWeb);
}
fclose(fpWeb);
fpWeb = NULL;
break;
}
}
return iRet;
} |
我用socket来获取一个网页内容,网页比较大大概347k.我用循环使用recv的办法来把网页保存到文件中,但是在最后一次recv时,recv函数却出现了死循环,这是为什么呢 |
|