注意ACE
ACE_Pipe是一个跨平台的管道实现。一般来说,ACE的实现是基于的,但是在Windows和Linux上,ACE的实现是基于Socket的。
int
ACE _ Pipe::open(int buffer _ size)
{
ACE _ TRACE(" ACE _ Pipe::open ");
# if defined(ace _ lack _ socket pair)| | defined(_ _ lynx _ _)
//绑定一个本地端口,0.0.0,然后找到对应的端口,用于下面的链接
if(acceptor . open(local _ any)=-1
| | acceptor . get _ local _ addr(my _ addr)= =-1)
result =-1;
else
{
//在同一个进程内建立连接。
if(connector . connect(writer,SV _ addr)=-1)
result =-1;
...
这么多管道特性特有的东西,在这两个平台上用ACE_Pipe都实现不了。比如管道的特性可以保证在暂时没有接收方的情况下可以使用,而Socket就不能有这个特性。你必须确保先有接收者,再有发送者的时机。
所以这个包不用在这些平台上。
0条评论