#### ip::udp::socket

The UDP socket type.

    typedef basic_datagram_socket< udp > socket;

###### Types

Name | Description
--- | ---
rebind_executor | Rebinds the socket type to another executor.
broadcast | Socket option to permit sending of broadcast messages.
bytes_readable | IO control command to get the amount of data that can be read without blocking.
debug | Socket option to enable socket-level debugging.
do_not_route | Socket option to prevent routing, use local interfaces only.
enable_connection_aborted | Socket option to report aborted connections on accept.
endpoint_type | The endpoint type.
executor_type | The type of the executor associated with the object.
keep_alive | Socket option to send keep-alives.
linger | Socket option to specify whether the socket lingers on close if unsent data is present.
lowest_layer_type | A basic_socket is always the lowest layer.
message_flags | Bitmask type for flags that can be passed to send and receive operations.
native_handle_type | The native representation of a socket.
out_of_band_inline | Socket option for putting received out-of-band data inline.
protocol_type | The protocol type.
receive_buffer_size | Socket option for the receive buffer size of a socket.
receive_low_watermark | Socket option for the receive low watermark.
reuse_address | Socket option to allow the socket to be bound to an address that is already in use.
send_buffer_size | Socket option for the send buffer size of a socket.
send_low_watermark | Socket option for the send low watermark.
shutdown_type | Different ways a socket may be shutdown.
wait_type | Wait types.

###### Member Functions

Name | Description
--- | ---
assign | Assign an existing native socket to the socket.
async_connect | Start an asynchronous connect.
async_receive | Start an asynchronous receive on a connected socket.
async_receive_from | Start an asynchronous receive.
async_send | Start an asynchronous send on a connected socket.
async_send_to | Start an asynchronous send.
async_wait | Asynchronously wait for the socket to become ready to read, ready to write, or to have pending error conditions.
at_mark | Determine whether the socket is at the out-of-band data mark.
available | Determine the number of bytes available for reading.

basic_datagram_socket [constructor]

Construct a basic_datagram_socket without opening it.
—
Construct and open a basic_datagram_socket.
—
Construct a basic_datagram_socket, opening it and binding it to the given local endpoint.
—
Construct a basic_datagram_socket on an existing native socket.
—
Move-construct a basic_datagram_socket from another.
—
Move-construct a basic_datagram_socket from a socket of another protocol type.

bind | Bind the socket to the given local endpoint.
cancel | Cancel all asynchronous operations associated with the socket.
close | Close the socket.
connect | Connect the socket to the specified endpoint.
get_executor | Get the executor associated with the object.
get_option | Get an option from the socket.
io_control | Perform an IO control command on the socket.
is_open | Determine whether the socket is open.
local_endpoint | Get the local endpoint of the socket.
lowest_layer | Get a reference to the lowest layer. — Get a const reference to the lowest layer.
native_handle | Get the native socket representation.
native_non_blocking | Gets the non-blocking mode of the native socket implementation. — Sets the non-blocking mode of the native socket implementation.
non_blocking | Gets the non-blocking mode of the socket. — Sets the non-blocking mode of the socket.
open | Open the socket using the specified protocol.
operator= | Move-assign a basic_datagram_socket from another. — Move-assign a basic_datagram_socket from a socket of another protocol type.
receive | Receive some data on a connected socket.
receive_from | Receive a datagram with the endpoint of the sender.
release | Release ownership of the underlying native socket.
remote_endpoint | Get the remote endpoint of the socket.
send | Send some data on a connected socket.
send_to | Send a datagram to the specified endpoint.
set_option | Set an option on the socket.
shutdown | Disable sends or receives on the socket.
wait | Wait for the socket to become ready to read, ready to write, or to have pending error conditions.
~basic_datagram_socket [destructor] | Destroys the socket.

###### Data Members

Name | Description
--- | ---
max_connections [static] | (Deprecated: Use max_listen_connections.) The maximum length of the queue of pending incoming connections.
max_listen_connections [static] | The maximum length of the queue of pending incoming connections.
message_do_not_route [static] | Specify that the data should not be subject to routing.
message_end_of_record [static] | Specifies that the data marks the end of a record.
message_out_of_band [static] | Process out-of-band data.
message_peek [static] | Peek at incoming data without removing it from the input queue.

The `basic_datagram_socket` class template provides asynchronous and blocking datagram-oriented socket functionality.

###### Thread Safety

Distinct objects: Safe.

Shared objects: Unsafe.

###### Requirements

Header: `asio/ip/udp.hpp`

Convenience header: `asio.hpp`