peakzhang 发表于 2008-1-6 16:41:21

关于ACE_Time_Value


int handle_input(ACE_HANDLE fd /* = ACE_INVALID_HANDLE */)
{
ACE_Time_Value waittime(1);//等待一秒
if(peer().recv_n(data,3,&waittime)==-1)
{
   ACE_DEBUG((LM_DEBUG,"time is out\n"));
   return 0;;
}
ACE_DEBUG((LM_DEBUG,"hello\n"));

return 0;
}

上面这个程序段是服务器端的,客户如果连接上一直不发数据,1.即便时间到了recv_n也不回返回.2.如果超过1秒后,客户端再发数据,显示的是hello,这个是什么原因?
    对于1,我想应该是没有引起回调handle_input的事件,但2怎么解释呢

peakzhang 发表于 2008-1-6 16:41:29

客户端发送数据后, handle_input后被再次调用,所以会显示hello.

peakzhang 发表于 2008-1-6 16:41:36

显然,超过1秒后,客户端发数据,服务端接收到后就进行handle_input的回调,并且recv_n()不会返回-1,那肯定就是到了HELLO的地方了

楼主误解了ACE_Time_Value

peakzhang 发表于 2008-1-6 16:41:43

明白了改为ACE_Time_Value waittime(0.001);//后就是time is out
页: [1]
查看完整版本: 关于ACE_Time_Value