找回密码
 用户注册

QQ登录

只需一步,快速开始

楼主: freeeyes

ACE开源服务器研究(SVN和git版本持续更新中)

 火... [复制链接]
发表于 2011-2-20 20:10:04 | 显示全部楼层
楼主:在逻辑动态库中要发送数据给另个服务器是不是这样调用啊?
IClientMessage* pClientMessage
m_pServerObject->GetClientManager()->Connect(1,"192.168.1.102",3333,pMessage);
ACE_Message_Block *mb = new ACE_Message_Block (30);
ACE_OS::sprintf(mb->wr_ptr(),"%s","hello"); (发送数据我是随便写个,假设是合法,)  
m_pServerObject->GetClientManager()->SendData(1,mb);
要给另外一个服务器发送数据,是这样做吗
 楼主| 发表于 2011-2-22 09:45:04 | 显示全部楼层
这部分文档我会尽快补上,最近比较忙,你看一下Iobject目录下的IClientManager.h
这里面包含了几个接口
Connect() 建立一个和其他服务器的链接
Close() 关闭一个和其他服务器的链接,这里面包含一个重载,如果没有参数是关闭所有的中间服务器链接,如果有ID则关闭指定的中间服务器链接。
SendData() 发送一条数据
StartConnectTask() 自动重连检测,如果有断开的链接同时在此实践间隔内没有链接请求,它会定时尝试重连远程服务器。
CancelConnectTask() 取消监视自动重连的定时器

使用的时候请参阅IObject类,其中有一个接口类 m_pClientManager就是这个类接口,使用之就好了,框架启动的时候会填充这个接口类。
最近实在是太忙,等过一段将这部分文档完善。
发表于 2011-2-22 09:54:28 | 显示全部楼层
不错不错不错不错
发表于 2011-2-23 16:22:36 | 显示全部楼层
好像最新版本,在linux下大小写敏感了

ClientReConnectManager.h:5:32: 错误:ace/Sock_Connector.h:没有那个文件或目录
应该是 #include "ace/SOCK_Connector.h"
 楼主| 发表于 2011-2-24 09:29:36 | 显示全部楼层
最近实在太忙了,没时间修改makefile文件,我这里其实已经修改好可以编译运行了,过两天传上来。
发表于 2011-2-24 16:01:10 | 显示全部楼层
PurenessScopeServer不能在linux下编译,很郁闷
发表于 2011-2-24 17:29:56 | 显示全部楼层
大力支持啊。可以还没配置好。
发表于 2011-2-25 11:36:40 | 显示全部楼层
粗浅了解了这个服务在设计模式方面结构,主要是

单件模式->工厂模式->实例   

的这种方法,

请教一下这种方法好处有哪些?
 楼主| 发表于 2011-2-25 18:44:34 | 显示全部楼层
makefile已经更新,可以在linux下测试了,下周有时间我会传上来。
发表于 2011-3-1 15:50:48 | 显示全部楼层
看了看更新的代码的
发现楼主的IO_COUNT 在收到一次完整数据包并放入系统队列的时候CheckMessage里 做了一次自增
在PutSendPacket的函数里调用了Close()进行自减
万一客户端发起一个请求(IO_COUNT++) 要求服务端不断的发数据(IO_COUNT--)
那不是立马就挂了吗?  

本人最近也在研究ACE的proactor 并做了个数据传输的服务器
觉得引用计数用的应该没问题 在read或write时++ 在handle_write或handle_read时--
结果反复开多handler和关闭 程序偶尔会当掉 一看堆栈发现ProHandler*是个野指针 看来是proactor回调过来重复删除了
头疼ing
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

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

GMT+8, 2024-12-22 21:18 , Processed in 0.015664 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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