异步线程CAsyncSocket设置接收超时

机器人 2008-04-21 04:58:06
最近遇到一个奇怪的现象
创建异步线程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
...全文
231 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
用户 昵称 2008-04-22
  • 打赏
  • 举报
回复
线程不是总得到cpu的吧。500ms的差异的确大。
机器人 2008-04-22
  • 打赏
  • 举报
回复
ding
机器人 2008-04-21
  • 打赏
  • 举报
回复
顶一下。

7,540

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧