setsockopt函数设置recv缓冲区后仍然堵塞,请大牛帮忙。。
小弟程序里用setsockopt函数设置recv缓冲区后仍然堵塞,百思不得其解。。请大牛帮忙看看改怎么改。。谢谢。。。。
BOOL RecvData(SOCKET s,char*data,int len)
{
char *pData=data;
int iLeftRecv=len;
int iRet=0;
int iHasRecv=0;
if(len<=0)
{
return TRUE;
}
while(1)
{
int nRecvBuf=128*1024;//设置为128K
setsockopt(s,SOL_SOCKET,SO_RCVBUF,(const char*)&nRecvBuf,sizeof(int));
iRet=recv(s,pData,iLeftRecv,0);
if(iRet==0||iRet==SOCKET_ERROR)
{
return FALSE;
}
iHasRecv+=iRet;
iLeftRecv-=iRet;
pData+=iRet;
if(iHasRecv>=len)
break;
}
return TRUE;
}