owa*_*der 7 c++ sockets boost network-programming boost-asio
破坏者究竟做了boost::asio::ip::tcp::socket什么?我不知道,即使在浏览Boost文档和源代码之后,如果我需要使用它
socket->shutdown(boost::asio::ip::tcp::socket::shutdown_both);
socket->close();
Run Code Online (Sandbox Code Playgroud)
在打电话之前
delete socket;
Run Code Online (Sandbox Code Playgroud)
我是否需要手动关闭套接字,或者析构函数是否处理此问题?
当一个插座被破坏,它将被关闭作为-如果由socket.close(ec)插座的销毁过程中.
I/O对象,例如socket派生自basic_io_object.在basic_io_object析构函数中,destroy()将在I/O对象的I/O服务上调用,传入implementation_typeI/O对象服务将在其上运行的实例.在socket的情况下,destroy()将在满足SocketService类型要求的类型上调用,关闭底层套接字.在下面的文档中,a是套接字服务类b的实例,并且是套接字服务类的实例implementation_type:
a.destroy(b):[...]隐式取消异步操作,就像通过调用一样
a.close(b, ec).
a.close(b, ec):如果
a.is_open()为true,则会导致任何未完成的异步操作尽快完成.取消操作的处理程序应传递错误代码error::operation_aborted.发布:
!a.is_open(b).