Close the socket.
This function is used to close the socket. Any asynchronous send, receive or connect operations will be cancelled immediately, and will complete with the boost::asio::error::operation_aborted error.
Thrown on failure.
For portable behaviour with respect to graceful closure of a connected socket, call shutdown() before closing the socket.