找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 6613|回复: 3

关于ACE_Time_Value

[复制链接]
发表于 2008-1-6 16:41:21 | 显示全部楼层 |阅读模式
  1. int handle_input(ACE_HANDLE fd /* = ACE_INVALID_HANDLE */)
  2. {
  3.   ACE_Time_Value waittime(1);//等待一秒
  4.   if(peer().recv_n(data,3,&waittime)==-1)
  5.   {
  6.    ACE_DEBUG((LM_DEBUG,"time is out\n"));
  7.    return 0;;
  8.   }
  9. ACE_DEBUG((LM_DEBUG,"hello\n"));
  10. return 0;
  11. }
复制代码
上面这个程序段是服务器端的,客户如果连接上一直不发数据,1.即便时间到了recv_n也不回返回.2.如果超过1秒后,客户端再发数据,显示的是hello,这个是什么原因?
    对于1,我想应该是没有引起回调handle_input的事件,但2怎么解释呢
 楼主| 发表于 2008-1-6 16:41:29 | 显示全部楼层
客户端发送数据后, handle_input后被再次调用,所以会显示hello.
 楼主| 发表于 2008-1-6 16:41:36 | 显示全部楼层
显然,超过1秒后,客户端发数据,服务端接收到后就进行handle_input的回调,并且recv_n()不会返回-1,那肯定就是到了HELLO的地方了

楼主误解了ACE_Time_Value
 楼主| 发表于 2008-1-6 16:41:43 | 显示全部楼层
明白了改为ACE_Time_Value waittime(0.001);//后就是time is out
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-11-22 07:20 , Processed in 0.022047 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表