djoin 发表于 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);
要给另外一个服务器发送数据,是这样做吗

freeeyes 发表于 2011-2-22 09:45:04

这部分文档我会尽快补上,最近比较忙,你看一下Iobject目录下的IClientManager.h
这里面包含了几个接口
Connect() 建立一个和其他服务器的链接
Close() 关闭一个和其他服务器的链接,这里面包含一个重载,如果没有参数是关闭所有的中间服务器链接,如果有ID则关闭指定的中间服务器链接。
SendData() 发送一条数据
StartConnectTask() 自动重连检测,如果有断开的链接同时在此实践间隔内没有链接请求,它会定时尝试重连远程服务器。
CancelConnectTask() 取消监视自动重连的定时器

使用的时候请参阅IObject类,其中有一个接口类 m_pClientManager就是这个类接口,使用之就好了,框架启动的时候会填充这个接口类。
最近实在是太忙,等过一段将这部分文档完善。

huzia 发表于 2011-2-22 09:54:28

不错不错不错不错

laja 发表于 2011-2-23 16:22:36

好像最新版本,在linux下大小写敏感了

ClientReConnectManager.h:5:32: 错误:ace/Sock_Connector.h:没有那个文件或目录
应该是 #include "ace/SOCK_Connector.h"

freeeyes 发表于 2011-2-24 09:29:36

最近实在太忙了,没时间修改makefile文件,我这里其实已经修改好可以编译运行了,过两天传上来。

laja 发表于 2011-2-24 16:01:10

PurenessScopeServer不能在linux下编译,很郁闷

makelife 发表于 2011-2-24 17:29:56

大力支持啊。可以还没配置好。

laja 发表于 2011-2-25 11:36:40

粗浅了解了这个服务在设计模式方面结构,主要是

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

的这种方法,

请教一下这种方法好处有哪些?

freeeyes 发表于 2011-2-25 18:44:34

makefile已经更新,可以在linux下测试了,下周有时间我会传上来。

hhjj6363 发表于 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
页: 2 3 4 5 6 7 8 9 10 11 [12] 13 14 15 16 17 18 19 20 21
查看完整版本: ACE开源服务器研究(SVN和git版本持续更新中)