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