ACE中,同时使用ACE_Acceptor和ACE_Connect的时候,如何实现接收和发送的同步

cy721 2008-12-08 10:56:19
小弟目前在做一个项目,是用ACE来架构的,
该ACE既是服务器又是客户端
主要流程是
其他客户端->(ACE服务器->ACE客户端)->其他服务器
中间括号的是我的ACE模块,
问题:
1 当我启动我的ACE模块时,需要分别给ACE服务器,ACE客户端都启动对应的ACE反应器来检测事件吗(我尝试了下,在主函数内开线程分别启动,程序会报错),还是只需要在主程序启动服务器的就可以了。

2当其他客户端,其他服务器同时向我的模块发送数据的时候,如何实现同步???
...全文
169 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lijuntao1027 2009-09-29
  • 打赏
  • 举报
回复
是的,开两个端口,两个线程来驱动事件循环
在需要同步的时候,可以用ACE_Guard<ACE_Thread_Mute>来实现同步
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 cy721 的回复:]
我的模块的架构就是2个简单的连接器,和接受器,接受器主要是负责接收来自其他客户端的数据,然后把接收到的数据传给连接器,再由连接器将该数据发送给其他的服务器,该模块的功能就类似于一个中转站,只是把数据转发下。
目前的问题是当其他的服务器接收到我的数据后,他会一直给我返回数据,而将会一直触发连接器的Handle_Input()函数,而这时如果有前面客户端向我的接收器发送数据的时候,接收器的Handle_Input()将不会触发…
[/Quote]

晕,那是必然呢,1个线程怎么能2个recv呢?同时发来确实就挂了。最好开2个端口,并发服务器,分别给客户端和服务器。
lijuntao1027 2009-03-17
  • 打赏
  • 举报
回复
up
toadzw 2008-12-08
  • 打赏
  • 举报
回复
up to your climax
cy721 2008-12-08
  • 打赏
  • 举报
回复
怎么没人帮下我啊!
cy721 2008-12-08
  • 打赏
  • 举报
回复
我的模块的架构就是2个简单的连接器,和接受器,接受器主要是负责接收来自其他客户端的数据,然后把接收到的数据传给连接器,再由连接器将该数据发送给其他的服务器,该模块的功能就类似于一个中转站,只是把数据转发下。
目前的问题是当其他的服务器接收到我的数据后,他会一直给我返回数据,而将会一直触发连接器的Handle_Input()函数,而这时如果有前面客户端向我的接收器发送数据的时候,接收器的Handle_Input()将不会触发。

也就是我的ACE模块当同时接收来自两端的数据的时候,将会出现阻塞的现象,
是不是需要我把我的连接器和接受器分别放在2个线程里

星羽 2008-12-08
  • 打赏
  • 举报
回复
up
hhyttppd 2008-12-08
  • 打赏
  • 举报
回复
不明白你的架构。

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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