该单独的受体类别背后的设计基本原理存在于ASIO中
Design rationale behind that separate acceptor class exists in ASIO
我试图了解为什么ASIO有专用tcp::acceptor
类。
在引擎盖下,tcp::acceptor
和tcp::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
之类的铸件?您会看到功绩)。
相关文章:
- 理解boost::asio-async_read在无需读取内容时的行为
- C++模板来检查友元函数的存在
- 提升 ASIO 无法识别计时器对象
- 既然存在危险,为什么项目要使用-I include开关
- 我们可以访问一个不存在的联盟的成员吗
- C++:对不存在的命名空间使用命名空间指令
- C++Boost Asio Pool线程,带有lambda函数和传递引用变量
- boost::asio::steady_timer()与sleep()我应该使用哪一个
- C++quit()函数中可能存在作用域问题
- boost::asio如何生成多个协同程序,然后加入它们
- C++擦除(如果存在)
- g++ 说函数不存在,即使包含正确的标头
- 这个极客对极客的trie实现是否存在内存泄漏问题
- 有了gcc,是否可以链接库,但前提是它存在
- C++LinkedList问题.数据类型之间存在冲突?没有匹配的构造函数
- gcc和clang在表达式是否为常量求值的问题上存在分歧
- 缓慢提升ASIO
- 可以使用ASIO BASIC_STREAM_SOCTED(或存在等效的)来写入文件
- 在read()之前检查boost::asio缓冲区数据是否存在
- boost::asio::error类已不存在