ACE在收发数据之前,有没有检测连接状态的函数?
如题:小弟最近在写一个通讯程序的时候遇到一些麻烦, 我的客户端初始连接上服务器,可以收发数据.现在要在收发数据的时候,检测和服务端的连接,如果连接断开了,客户端就一直进行连接,直到连接上.
现在就是不知道该该怎么去判断这个连接是否已经连接上. 麻烦大家不吝赐教! 不需要判断,直接收发即可。如果出现错误了,判断是否中断了,中断了再用Connector重新连接即可。
理解了ACE的设计,很多事情真是非常简单。 若连接断开了,你再发送数据就会出现错误,然后你可以根据错误号(通过ACE_OS::last_error()获得)来判断是否需要重连 我在程序中接收数据是如下实现的:
if((byte_count = client_stream_.recv( Head, 2 ,0 )) == -1)
{
memset(Head,0,2);
ACE_ERROR((LM_ERROR, "%p\n", "Error in recv"));
}
发送数据是如下实现的:
if(client_stream_.send_n( data, strlen(data), 0 ) == -1 )
{
memset(data,0,strlen(data));
ACE_ERROR_RETURN((LM_ERROR,"(%P|%t)%p\n","send_n"),0);
}
我想如果断开的话,是否可以通过AEC_ERROR / ACE_ERROR_RETURN 的返回值来确定是否需要重新连接? 需要判断ACE_OS::last_error()的值。你这样写不行。
页:
[1]