首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASIO中存在独立的受体类的设计原理

ASIO中存在独立的受体类的设计原理
EN

Stack Overflow用户
提问于 2017-10-02 12:40:15
回答 1查看 91关注 0票数 1

我试图理解为什么ASIO有一个专用的tcp::acceptor类。

在引擎盖下,tcp::acceptortcp::socket都包含一个int socket_fd,不是吗?

为什么不将tcp::acceptor的独特功能添加到tcp::socket中呢?除了listenaccepttcp::socket可以做任何低级int socket_fd可以做的事情。

(我是ASIO的新手,也许我没有看到一些基本的东西)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-02 14:06:13

他们有一套单独的行动。

另外,它们有一组单独的套接字选项,这些选项适用。

代码语言:javascript
复制
acceptor_.set_option(boost::asio::ip::tcp::acceptor::reuse_address(true));

这种区别提高了接口的抽象性,并使正确使用API变得更加容易。

坦率地说,您可以说这是因为它是一个BSD,而不是C++套接字。

当您问到为什么socket是一个带有方法的对象时(而不是仅仅传递句柄,真的吗?),答案是一样的。或者为什么类在协议上都是模板化的(还记得像(struct sockaddr_in *) p->ai_addr这样的强制转换吗?你会看到它的优点)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46525643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档