【发布时间】:2017-02-10 07:17:24
【问题描述】:
boost::asio::ip::tcp::socket 的析构函数究竟做了什么?即使在搜索 Boost 文档和源代码之后,我也无法判断是否需要使用
socket->shutdown(boost::asio::ip::tcp::socket::shutdown_both);
socket->close();
打电话之前
delete socket;
我需要手动关闭套接字,还是由析构函数处理?
【问题讨论】:
-
看source code好像没有。
-
我知道。这很奇怪,因为套接字似乎会执行一些清理,但我认为我只是没有找到正确的代码。
-
没有。它必须是正确的代码,因为它直接来自 boost 网站,除非发生了一些奇怪的活动。但关键是没有析构函数,所以你必须自己关闭并关闭套接字。明白了吗?
-
@amanuel2 看我的回答。
-
@amanuel2 所有 I/O 对象都将清理工作推迟到它们都派生自
basic_io_object。
标签: c++ sockets boost network-programming boost-asio