ACE中ACE_SOCK下ACE_SOCK_Acceptor类解析

ACE_SOCK_Acceptor,ACE中面对流(有连接)sock编程的接受器类,将服务器端编程的细节,步骤做了包装,让我们不需要再直接的使用OS的复杂,繁多的API函数,那么这个类中到底替我们做了多少呢?我们该如何修改它呢?

首先看类的构造函数:

ACE_SOCK_Acceptor (void);

ACE_SOCK_Acceptor (const ACE_Addr &local_sap,
                     int reuse_addr = 0,
                     int protocol_family = PF_UNSPEC,
                     int backlog = ACE_DEFAULT_BACKLOG,
                     int protocol = 0);
ACE_SOCK_Acceptor (const ACE_Addr &local_sap,
                     ACE_Protocol_Info *protocolinfo,
                     ACE_SOCK_GROUP g,
                     u_long flags,
                     int reuse_addr,
                     int protocol_family = PF_UNSPEC,
                     int backlog = ACE_DEFAULT_BACKLOG,
                     int protocol = 0);

第三个构造函数比第二个多了三个参数,这个构造函数我们不讨论(超复杂,相信你知道真相也会放弃的)。

第一个是无参,不解释。

第二个构造函数,也是重点,它有5个参数,但是后四个都有默认的参数,但是还是解释一下它们的含义。

local_sap:类型是ACE_Addr的引用,不用说了吧,bind()函数的地址参数
reuse_addr:这个参数表示是否打开SO_REUSEPORT这个选项,至于这个选项的含义很长的,这里给你一个链接:http://www.cnblogs.com/mydomain/archive/2011/08/23/2150567.html       讲的很详细。

protocol_family:就是sock函数的第1个参数,地址族,默认就好
backlog:这个是listen()函数的第二个参数,意义就不说了
protocol:sock()函数的第3个参数,这个参数最好不要改,让系统自己确定使用的协议就好,当然默认是TCP

接下来是两个open()函数,这两个函数的参数分别对应两个构造函数,连参数都是一样的,实际上两个构造函数内部就是调用这两个自己对应的open()函数来完成的,当然如果你使用的无参构造函数,那么这个open()函数你还是仔细写一下。

/// Close the socket.  Returns 0 on success and -1 on failure.
  int close (void);

关闭函数,很简单。

接下来就是两个accept()函数,也是重中之重,第二个不说了,因为它要就在windows中才有可能用到。

int accept (ACE_SOCK_Stream &new_stream,
              ACE_Addr *remote_addr = 0,
              ACE_Time
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值