找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 3491|回复: 4

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

[复制链接]
发表于 2008-1-6 21:44:55 | 显示全部楼层 |阅读模式
如题:
       小弟最近在写一个通讯程序的时候遇到一些麻烦, 我的客户端初始连接上服务器,可以收发数据.现在要在收发数据的时候,检测和服务端的连接,如果连接断开了,客户端就一直进行连接,直到连接上.
       现在就是不知道该该怎么去判断这个连接是否已经连接上. 麻烦大家不吝赐教!
 楼主| 发表于 2008-1-6 21:44:58 | 显示全部楼层
不需要判断,直接收发即可。如果出现错误了,判断是否中断了,中断了再用Connector重新连接即可。
理解了ACE的设计,很多事情真是非常简单。
 楼主| 发表于 2008-1-6 21:45:06 | 显示全部楼层
若连接断开了,你再发送数据就会出现错误,然后你可以根据错误号(通过ACE_OS::last_error()获得)来判断是否需要重连
 楼主| 发表于 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 的返回值来确定是否需要重新连接?
 楼主| 发表于 2008-1-6 21:45:21 | 显示全部楼层
需要判断ACE_OS::last_error()的值。你这样写不行。
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

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

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

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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