##### basic_socket::close (2 of 2 overloads)

Close the socket.

    void close(
        asio::error_code & ec);

This function is used to close the socket. Any asynchronous send, receive or connect operations will be cancelled immediately, and will complete with the `asio::error::operation_aborted` error.

###### Parameters

ec

  Set to indicate what error occurred, if any. Note that, even if the function indicates an error, the underlying descriptor is closed.

###### Example

    asio::ip::tcp::socket socket(my_context);
    ...
    asio::error_code ec;
    socket.close(ec);
    if (ec)
    {
      // An error occurred.
    }

###### Remarks

For portable behaviour with respect to graceful closure of a connected socket, call `shutdown()` before closing the socket.