最近遇到一个奇怪的现象
创建异步线程CAsyncSocket
并使用AsyncSelect(0)和IOCtrl(FIONBIO,0)将其设置为阻塞模式
然后用SetSockOpt(SO_RCVTIMEO,&nRcvTimeOut,sizeof(nRcvTimeOut))设置接受超时.
然而 ,在接收过程中遇到一个奇怪的现象
如果超时的话,超时时间总是比设置的超时时间多出500ms左右,不知道是什么原因
请高手解答
代码大致如下
CAsyncSocket *skt = new CAsyncSocket;
skt->Create();
skt->AsyncSelect(0);
skt->IOCtrl(FIONBIO,0);
skt->SetSockOpt(SO_RCVTIMEO,&nRcvTimeOut,sizeof(nRcvTimeOut));
skt->Receive(RecvBuff, sizeof(RecvBuff));
计算时间的代码是加在Receive()前后的
如下:
d1 = timeGetTime();
skt->Receive(RecvBuff, sizeof(RecvBuff));
d2 = timeGetTime();
结果d2-d1大于500ms