| Home | Libraries | People | FAQ | More

##### basic_seq_packet_socket::receive (2 of 3 overloads)

Receive some data on the socket.

    template<
        typename MutableBufferSequence>
    std::size_t receive(
        const MutableBufferSequence & buffers,
        socket_base::message_flags in_flags,
        socket_base::message_flags & out_flags);

This function is used to receive data on the sequenced packet socket. The function call will block until data has been received successfully, or until an error occurs.

###### Parameters

buffers

  One or more buffers into which the data will be received.

in_flags

  Flags specifying how the receive call is to be made.

out_flags

  After the receive call completes, contains flags associated with the received data. For example, if the `socket_base::message_end_of_record` bit is set then the received data marks the end of a record.

###### Return Value

The number of bytes received.

###### Exceptions

boost::system::system_error

  Thrown on failure. An error code of `boost::asio::error::eof` indicates that the connection was closed by the peer.

###### Remarks

The receive operation may not receive all of the requested number of bytes. Consider using the `read` function if you need to ensure that the requested amount of data is read before the blocking operation completes.

###### Example

To receive into a single data buffer use the `buffer` function as follows:

    socket.receive(boost::asio::buffer(data, size), 0, out_flags);

See the `buffer` documentation for information on receiving into multiple buffers in one go, and how to use it with arrays, boost::array or std::vector.