ACE_HANDLE 怎么变成 ACE_SOCK_Stream
知道一个ACE_SOCK_Stream的值,就可以得到ACE_HANDLE ,那如果知道ACE_HANDLE ,怎么转化成一个ACE_SOCK_Stream的值,ACE里面有没有这样转换的宏。 ACE_SOCK_Stream (ACE_HANDLE h)Constructor (sets the underlying ACE_HANDLE with h). 那假设一个ACE_HANDLE 为 h
现在
ACE_SOCK_Streamstream1(h);
ACE_SOCK_Stream stream2(h);
ACE_SOCK_Stream stream3(h);
然后
stream1.send()
stream2.send()
stream3.send()
这三个发送的时候使用的是同一个连接吗? 是的,不过楼主为什么要这么用呢?
看不出来有什么好处。 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
先谢谢楼上的,我要先试试 建议楼主看一下ACE_Connector与ACE_Acceptor模型,
应该可以很好解决楼主遇到的问题.
由ACE_Connector建立的连接使用ACE_Svc_handler继承自ACE_Event_Handler
ACE_SOCK_Stream是ACE_Svc_handler的成员变量
因此hande_input之后,只要this->peer().recv()即可。
不存在楼主所谓的使用Handle进行线性查找的问题。
页:
[1]