该单独的受体类别背后的设计基本原理存在于ASIO中

Design rationale behind that separate acceptor class exists in ASIO

本文关键字:存在 ASIO 单独 背后      更新时间:2023-10-16

我试图了解为什么ASIO有专用tcp::acceptor类。

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

为什么不将tcp::acceptor的唯一功能添加到tcp::socket中?tcp::socket可以执行低级int socket_fd可以做的任何事情,除了listen&accept

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

他们有一组单独的操作。

另外,它们还有一组适用的插座选项,例如

acceptor_.set_option(boost::asio::ip::tcp::acceptor::reuse_address(true));

这种区别提高了接口的抽象,并使正确使用API更易于。

直言不讳,您可以说是因为它是C API,而不是BSD插座。

当您问为什么socket是用方法的对象时,您会得到的答案相同(而不是仅仅将手柄传递到周围,实际上更简单?)。或为什么所有类都在协议上模板(记得诸如(struct sockaddr_in *) p->ai_addr之类的铸件?您会看到功绩)。