peakzhang 发表于 2008-1-6 21:44:55

ACE在收发数据之前,有没有检测连接状态的函数?

如题:
       小弟最近在写一个通讯程序的时候遇到一些麻烦, 我的客户端初始连接上服务器,可以收发数据.现在要在收发数据的时候,检测和服务端的连接,如果连接断开了,客户端就一直进行连接,直到连接上.
       现在就是不知道该该怎么去判断这个连接是否已经连接上. 麻烦大家不吝赐教!

peakzhang 发表于 2008-1-6 21:44:58

不需要判断,直接收发即可。如果出现错误了,判断是否中断了,中断了再用Connector重新连接即可。
理解了ACE的设计,很多事情真是非常简单。

peakzhang 发表于 2008-1-6 21:45:06

若连接断开了,你再发送数据就会出现错误,然后你可以根据错误号(通过ACE_OS::last_error()获得)来判断是否需要重连

peakzhang 发表于 2008-1-6 21:45:13

我在程序中接收数据是如下实现的:

   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 的返回值来确定是否需要重新连接?

peakzhang 发表于 2008-1-6 21:45:21

需要判断ACE_OS::last_error()的值。你这样写不行。
页: [1]
查看完整版本: ACE在收发数据之前,有没有检测连接状态的函数?