找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 7114|回复: 5

ACE_HANDLE 怎么变成 ACE_SOCK_Stream

[复制链接]
发表于 2009-8-27 21:01:59 | 显示全部楼层 |阅读模式
知道一个ACE_SOCK_Stream的值,就可以得到ACE_HANDLE ,那如果知道ACE_HANDLE ,怎么转化成一个ACE_SOCK_Stream的值,ACE里面有没有这样转换的宏。
发表于 2009-8-28 10:39:30 | 显示全部楼层
ACE_SOCK_Stream (ACE_HANDLE h)
  Constructor (sets the underlying ACE_HANDLE with h).
 楼主| 发表于 2009-8-31 10:38:21 | 显示全部楼层
那假设一个ACE_HANDLE 为 h
现在
ACE_SOCK_Stream  stream1(h);
ACE_SOCK_Stream stream2(h);
ACE_SOCK_Stream stream3(h);
然后
stream1.send()
stream2.send()
stream3.send()

这三个发送的时候使用的是同一个连接吗?
发表于 2009-8-31 10:53:02 | 显示全部楼层
是的,不过楼主为什么要这么用呢?
看不出来有什么好处。
 楼主| 发表于 2009-8-31 14:35:19 | 显示全部楼层
reactor和ACE_Event_Handler一起使用的时候,可以读取数据时会回调成员函数hande_input(ACE_HANDLE h),
这里的参数是ACE_HANDLE 类型的,要找出对应的ACE_SOCK_Stream 才能读取数据,如果有N个ACE_SOCK_Stream 的话,要找出这里的ACE_HANDLE h对应的ACE_SOCK_Stream ,普通的办法要花线性的时间去做判断,而一个ACE_HANDLE 应该唯一对应一个ACE_SOCK_Stream,我想应该有办法不用花线性查找的时间就可以找出这个ACE_SOCK_Stream
先谢谢楼上的,我要先试试
发表于 2009-8-31 16:18:55 | 显示全部楼层
建议楼主看一下ACE_Connector与ACE_Acceptor模型,
应该可以很好解决楼主遇到的问题.
由ACE_Connector建立的连接使用ACE_Svc_handler继承自ACE_Event_Handler
ACE_SOCK_Stream是ACE_Svc_handler的成员变量
因此hande_input之后,只要this->peer().recv()即可。
不存在楼主所谓的使用Handle进行线性查找的问题。
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

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

GMT+8, 2024-12-23 13:46 , Processed in 0.025851 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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