gpt4 book ai didi

c++ - ASIO 中存在单独的接受器类背后的设计原理

转载 作者:行者123 更新时间:2023-11-30 01:39:03 24 4
gpt4 key购买 nike

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

在底层,tcp::acceptortcp::socket 都包含一个 int socket_fd,不是吗?

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

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

最佳答案

他们有一套独立的操作。

此外,它们还有一组单独的应用套接字选项,例如

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

这种区别 boost 了接口(interface)的抽象性,使正确使用API​​ 变得更加容易。

To put it bluntly, you could say it's because it's a C++ API, not BSD sockets.

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

关于c++ - ASIO 中存在单独的接受器类背后的设计原理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46525643/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com