关于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怎么解释呢 客户端发送数据后, handle_input后被再次调用,所以会显示hello. 显然,超过1秒后,客户端发数据,服务端接收到后就进行handle_input的回调,并且recv_n()不会返回-1,那肯定就是到了HELLO的地方了
楼主误解了ACE_Time_Value 明白了改为ACE_Time_Value waittime(0.001);//后就是time is out
页:
[1]