向ACE方面的高手求教,高分求一个ACE作服务器端的实例。

kevinhewanjun 2005-05-12 05:24:35
公司最近要用ACE开发一个项目。功能差不多就如一个ftp服务器。在控制台下按照ace的例子作一些修改都没问题。
但由于本项目要作一个如flashget一样的窗口控制界面,本人几经周折,现在的程序还是有些问题。
本人高分求一个ACE作服务器端的窗口实例。内容主要是窗口能于ACE后台的线程通讯。具体的业务可以不计。谢谢了!
本人邮箱为: jianhe575@yahoo.com.cn
...全文
298 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
kevinhewanjun 2005-05-21
  • 打赏
  • 举报
回复
最新发现的一个现象,如果我用一个Dialog作为主窗口,在“开始”按钮里启动后台线程,则运行没有问题 。便如果我用单文档的MainFrm作为主窗口,通过MainFrm的“开始”菜单启动后台线程,则会出现上述的问题,请高手分析一下原因。

谢谢!
kevinhewanjun 2005-05-21
  • 打赏
  • 举报
回复
多谢各位关心,问题已解决。
在以MainFrm作为主窗口的情况下,在线程函数的开始和结束部分分别加上:
ACE::init();

....



ACE::fini();

即可,

希望对大家有所帮助。
wy99sinacom 2005-05-19
  • 打赏
  • 举报
回复
如果不是主线程处理socket,需要指定服务处理器的线程拥有者
kevinhewanjun 2005-05-19
  • 打赏
  • 举报
回复
Re: ydogg

你好!
我用的的example为ACE_ROOT目录下的
examples\Connection\misc\Connection_handler.dsw

我的方案是让窗口作为主线程,在窗口启动时创建一个后台线程。
(后台线程的运行function 实际上就是 控制台方式下的main())。

如你有时间不妨一试。

最好是给我一个例程,后台的每个连接为一个线程,作一个简单的界面就可以。让线程和界面通过消息进行通讯。先谢了!

jianhe575@yahoo.com.cn
hxy2003 2005-05-17
  • 打赏
  • 举报
回复
e
ydogg 2005-05-17
  • 打赏
  • 举报
回复
hi kevinhewanjun
你使用ACE的方法没有问题,请详细描述出错的具体细节、位置、所属类。
mostideal 2005-05-14
  • 打赏
  • 举报
回复
ding
kevinhewanjun 2005-05-14
  • 打赏
  • 举报
回复
up
darkstar21cn 2005-05-13
  • 打赏
  • 举报
回复
偶没太看懂你想要的是什么。
是不是ACE网络部分是运行正常,而且用控制台控制也是正常的,但是使用界面控制的时候就出问题了?
如果是这样,出问题的应该是你的控制界面。你给的问题描述太过于模糊,没法确定答复。
kevinhewanjun 2005-05-13
  • 打赏
  • 举报
回复
up
darkstar21cn 2005-05-13
  • 打赏
  • 举报
回复
问题出在Reactor上,它实际上也是要占用一个线程的,在控制台程序中,一般它在主线程进行循环(do_event_loop(),好像是这个函数吧),别看它说是反应器,其实还是不断的循环尝试端口,如有新的连接时,才会回调函数open(void*),来处理这个连接。
你可以这样:
界面线程-----------------------------------------------
-----------reactor(这时再注册你的acceptor)----------
---------处理业务的线程----------------

现在我不作ACE了,所以ACE环境也已经删除了,具体问题还得你自己来解决。
kevinhewanjun 2005-05-13
  • 打赏
  • 举报
回复
谢谢 “爱上小猫的小狗” 的关注:
具体的情况是这样的,在控制台下,我采用的是accepter-connector模式。服务端我用反应器结合svr_handle来处理用户发来的连接。接到用户的连接后控制台主程序会自动产生新线程处理业务逻辑。这个我是照example改写的。运行也很正常。
现在问题是我想写一个窗口监控界面。我的方案是让窗口作为主线程,在窗口启动时创建一个后台线程。(后台线程的整个工作就如控制台方式下程序的main())。然后通过线程间的消息进行通讯。
此时由于accepter已不是主线程。所在在启动时就会运行出错。错误出现线程的临界区加锁:
::EnterCriticalSection(m) //这里的m还有初始化

如你有时间,不妨也作个测试。我参照的程序是 examples\Connection\misc\Connection_handler

。。。。搞不清楚是怎么回事。 我也在想是不是我这个方案不好 或请高手给一更好的方案和实例

不甚感谢!
zhousqy 2005-05-12
  • 打赏
  • 举报
回复
up
zhaoliang_chen 2005-05-12
  • 打赏
  • 举报
回复
up
xuzheng318 2005-05-12
  • 打赏
  • 举报
回复
请参考ace

www.flyingdoney.com
sunman1982 2005-05-12
  • 打赏
  • 举报
回复
这个恐怕不是高分能解决的吧。。。。。不懂帮顶

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧