| Home | Libraries | People | FAQ | More

# boost::asio::basic_socket_acceptor< Protocol, Service > Class Template Reference

Inherits boost::asio::basic_io_object< Service >< Service >, and boost::asio::socket_base.

Inheritance diagram for boost::asio::basic_socket_acceptor< Protocol, Service >:

List of all members.

## Detailed Description

### template<typename Protocol, typename Service = socket_acceptor_service<Protocol>>
class boost::asio::basic_socket_acceptor< Protocol, Service >

Provides the ability to accept new connections.

The basic_socket_acceptor class template is used for accepting new socket connections.

Thread Safety:
  Distinct objects: Safe.
  Shared objects: Unsafe.

Concepts:
  Async_Object, Error_Source.

Example:
  Opening a socket acceptor with the SO_REUSEADDR option enabled:

       boost::asio::ip::tcp::acceptor acceptor(io_service);
       boost::asio::ip::tcp::endpoint endpoint(boost::asio::ip::tcp::v4(), port);
       acceptor.open(endpoint.protocol());
       acceptor.set_option(boost::asio::ip::tcp::acceptor::reuse_address(true));
       acceptor.bind(endpoint);
       acceptor.listen();

## Public Types

typedef Service::native_type | native_type
| The native representation of an acceptor.
typedef Protocol | protocol_type
| The protocol type.
typedef Protocol::endpoint | endpoint_type
| The endpoint type.
typedef boost::asio::error | error_type
| The type used for reporting errors.
typedef Service | service_type
| The type of the service that will be used to provide I/O operations.
typedef service_type::implementation_type | implementation_type
| The underlying implementation type of I/O object.
typedef int | message_flags
| Bitmask type for flags that can be passed to send and receive operations.
typedef implementation_defined | broadcast
| Socket option to permit sending of broadcast messages.
typedef implementation_defined | do_not_route
| Socket option to prevent routing, use local interfaces only.
typedef implementation_defined | keep_alive
| Socket option to send keep-alives.
typedef implementation_defined | send_buffer_size
| Socket option for the send buffer size of a socket.
typedef implementation_defined | send_low_watermark
| Socket option for the send low watermark.
typedef implementation_defined | receive_buffer_size
| Socket option for the receive buffer size of a socket.
typedef implementation_defined | receive_low_watermark
| Socket option for the receive low watermark.
typedef implementation_defined | reuse_address
| Socket option to allow the socket to be bound to an address that is already in use.
typedef implementation_defined | linger
| Socket option to specify whether the socket lingers on close if unsent data is present.
typedef implementation_defined | enable_connection_aborted
| Socket option to report aborted connections on accept.
typedef implementation_defined | non_blocking_io
| IO control command to set the blocking mode of the socket.
typedef implementation_defined | bytes_readable
| IO control command to get the amount of data that can be read without blocking.
| shutdown_receive = implementation_defined
| Shutdown the receive side of the socket.
| shutdown_send = implementation_defined
| Shutdown the send side of the socket.
| shutdown_both = implementation_defined
| Shutdown both send and receive on the socket.
enum | shutdown_type { shutdown_receive = implementation_defined, shutdown_send = implementation_defined, shutdown_both = implementation_defined }
| Different ways a socket may be shutdown. More...

## Public Member Functions

| basic_socket_acceptor (boost::asio::io_service &io_service)
| Construct an acceptor without opening it.
| basic_socket_acceptor (boost::asio::io_service &io_service, const protocol_type &protocol)
| Construct an open acceptor.
| basic_socket_acceptor (boost::asio::io_service &io_service, const endpoint_type &endpoint, int listen_backlog=0)
| Construct an acceptor opened on the given endpoint.
| basic_socket_acceptor (boost::asio::io_service &io_service, const protocol_type &protocol, const native_type &native_acceptor)
| Construct a basic_socket_acceptor on an existing native acceptor.
void | open (const protocol_type &protocol=protocol_type())
| Open the acceptor using the specified protocol.
template<typename Error_Handler>
void | open (const protocol_type &protocol, Error_Handler error_handler)
| Open the acceptor using the specified protocol.
void | assign (const protocol_type &protocol, const native_type &native_acceptor)
| Assigns an existing native acceptor to the acceptor.
template<typename Error_Handler>
void | assign (const protocol_type &protocol, const native_type &native_acceptor, Error_Handler error_handler)
| Assigns an existing native acceptor to the acceptor.
void | bind (const endpoint_type &endpoint)
| Bind the acceptor to the given local endpoint.
template<typename Error_Handler>
void | bind (const endpoint_type &endpoint, Error_Handler error_handler)
| Bind the acceptor to the given local endpoint.
void | listen (int backlog=0)
| Place the acceptor into the state where it will listen for new connections.
template<typename Error_Handler>
void | listen (int backlog, Error_Handler error_handler)
| Place the acceptor into the state where it will listen for new connections.
void | close ()
| Close the acceptor.
template<typename Error_Handler>
void | close (Error_Handler error_handler)
| Close the acceptor.
native_type | native ()
| Get the native acceptor representation.
template<typename Option>
void | set_option (const Option &option)
| Set an option on the acceptor.
template<typename Option, typename Error_Handler>
void | set_option (const Option &option, Error_Handler error_handler)
| Set an option on the acceptor.
template<typename Option>
void | get_option (Option &option)
| Get an option from the acceptor.
template<typename Option, typename Error_Handler>
void | get_option (Option &option, Error_Handler error_handler)
| Get an option from the acceptor.
endpoint_type | local_endpoint () const
| Get the local endpoint of the acceptor.
template<typename Error_Handler>
endpoint_type | local_endpoint (Error_Handler error_handler) const
| Get the local endpoint of the acceptor.
template<typename Socket_Service>
void | accept (basic_socket< protocol_type, Socket_Service > &peer)
| Accept a new connection.
template<typename Socket_Service, typename Error_Handler>
void | accept (basic_socket< protocol_type, Socket_Service > &peer, Error_Handler error_handler)
| Accept a new connection.
template<typename Socket_Service, typename Handler>
void | async_accept (basic_socket< protocol_type, Socket_Service > &peer, Handler handler)
| Start an asynchronous accept.
template<typename Socket_Service>
void | accept_endpoint (basic_socket< protocol_type, Socket_Service > &peer, endpoint_type &peer_endpoint)
| Accept a new connection and obtain the endpoint of the peer.
template<typename Socket_Service, typename Error_Handler>
void | accept_endpoint (basic_socket< protocol_type, Socket_Service > &peer, endpoint_type &peer_endpoint, Error_Handler error_handler)
| Accept a new connection and obtain the endpoint of the peer.
template<typename Socket_Service, typename Handler>
void | async_accept_endpoint (basic_socket< protocol_type, Socket_Service > &peer, endpoint_type &peer_endpoint, Handler handler)
| Start an asynchronous accept.
boost::asio::io_service & | io_service ()
| Get the io_service associated with the object.

## Static Public Attributes

static const int | message_peek = implementation_defined
| Peek at incoming data without removing it from the input queue.
static const int | message_out_of_band = implementation_defined
| Process out-of-band data.
static const int | message_do_not_route = implementation_defined
| Specify that the data should not be subject to routing.

## Member Typedef Documentation

template<typename Protocol, typename Service = socket_acceptor_service<Protocol>>

typedef Service::native_type boost::asio::basic_socket_acceptor< Protocol, Service >::native_type

The native representation of an acceptor.

template<typename Protocol, typename Service = socket_acceptor_service<Protocol>>

typedef Protocol boost::asio::basic_socket_acceptor< Protocol, Service >::protocol_type

The protocol type.

template<typename Protocol, typename Service = socket_acceptor_service<Protocol>>

typedef Protocol::endpoint boost::asio::basic_socket_acceptor< Protocol, Service >::endpoint_type

The endpoint type.

template<typename Protocol, typename Service = socket_acceptor_service<Protocol>>

typedef boost::asio::error boost::asio::basic_socket_acceptor< Protocol, Service >::error_type

The type used for reporting errors.

template<typename Service>

typedef Service boost::asio::basic_io_object< Service >::service_type `[inherited]`

The type of the service that will be used to provide I/O operations.

template<typename Service>

typedef service_type::implementation_type boost::asio::basic_io_object< Service >::implementation_type `[inherited]`

The underlying implementation type of I/O object.

typedef int boost::asio::socket_base::message_flags `[inherited]`

Bitmask type for flags that can be passed to send and receive operations.

typedef implementation_defined boost::asio::socket_base::broadcast `[inherited]`

Socket option to permit sending of broadcast messages.

Implements the SOL_SOCKET/SO_BROADCAST socket option.

Examples:
  Setting the option:

       boost::asio::ip::udp::socket socket(io_service);
       ...
       boost::asio::socket_base::broadcast option(true);
       socket.set_option(option);

  Getting the current option value:

       boost::asio::ip::udp::socket socket(io_service);
       ...
       boost::asio::socket_base::broadcast option;
       socket.get_option(option);
       bool is_set = option.get();

Concepts:
  Socket_Option, Boolean_Socket_Option.

typedef implementation_defined boost::asio::socket_base::do_not_route `[inherited]`

Socket option to prevent routing, use local interfaces only.

Implements the SOL_SOCKET/SO_DONTROUTE socket option.

Examples:
  Setting the option:

       boost::asio::ip::udp::socket socket(io_service);
       ...
       boost::asio::socket_base::do_not_route option(true);
       socket.set_option(option);

  Getting the current option value:

       boost::asio::ip::udp::socket socket(io_service);
       ...
       boost::asio::socket_base::do_not_route option;
       socket.get_option(option);
       bool is_set = option.get();

Concepts:
  Socket_Option, Boolean_Socket_Option.

typedef implementation_defined boost::asio::socket_base::keep_alive `[inherited]`

Socket option to send keep-alives.

Implements the SOL_SOCKET/SO_KEEPALIVE socket option.

Examples:
  Setting the option:

       boost::asio::ip::tcp::socket socket(io_service);
       ...
       boost::asio::socket_base::keep_alive option(true);
       socket.set_option(option);

  Getting the current option value:

       boost::asio::ip::tcp::socket socket(io_service);
       ...
       boost::asio::socket_base::keep_alive option;
       socket.get_option(option);
       bool is_set = option.get();

Concepts:
  Socket_Option, Boolean_Socket_Option.

typedef implementation_defined boost::asio::socket_base::send_buffer_size `[inherited]`

Socket option for the send buffer size of a socket.

Implements the SOL_SOCKET/SO_SNDBUF socket option.

Examples:
  Setting the option:

       boost::asio::ip::tcp::socket socket(io_service);
       ...
       boost::asio::socket_base::send_buffer_size option(8192);
       socket.set_option(option);

  Getting the current option value:

       boost::asio::ip::tcp::socket socket(io_service);
       ...
       boost::asio::socket_base::send_buffer_size option;
       socket.get_option(option);
       int size = option.get();

Concepts:
  Socket_Option, Integer_Socket_Option.

typedef implementation_defined boost::asio::socket_base::send_low_watermark `[inherited]`

Socket option for the send low watermark.

Implements the SOL_SOCKET/SO_SNDLOWAT socket option.

Examples:
  Setting the option:

       boost::asio::ip::tcp::socket socket(io_service);
       ...
       boost::asio::socket_base::send_low_watermark option(1024);
       socket.set_option(option);

  Getting the current option value:

       boost::asio::ip::tcp::socket socket(io_service);
       ...
       boost::asio::socket_base::send_low_watermark option;
       socket.get_option(option);
       int size = option.get();

Concepts:
  Socket_Option, Integer_Socket_Option.

typedef implementation_defined boost::asio::socket_base::receive_buffer_size `[inherited]`

Socket option for the receive buffer size of a socket.

Implements the SOL_SOCKET/SO_RCVBUF socket option.

Examples:
  Setting the option:

       boost::asio::ip::tcp::socket socket(io_service);
       ...
       boost::asio::socket_base::receive_buffer_size option(8192);
       socket.set_option(option);

  Getting the current option value:

       boost::asio::ip::tcp::socket socket(io_service);
       ...
       boost::asio::socket_base::receive_buffer_size option;
       socket.get_option(option);
       int size = option.get();

Concepts:
  Socket_Option, Integer_Socket_Option.

typedef implementation_defined boost::asio::socket_base::receive_low_watermark `[inherited]`

Socket option for the receive low watermark.

Implements the SOL_SOCKET/SO_RCVLOWAT socket option.

Examples:
  Setting the option:

       boost::asio::ip::tcp::socket socket(io_service);
       ...
       boost::asio::socket_base::receive_low_watermark option(1024);
       socket.set_option(option);

  Getting the current option value:

       boost::asio::ip::tcp::socket socket(io_service);
       ...
       boost::asio::socket_base::receive_low_watermark option;
       socket.get_option(option);
       int size = option.get();

Concepts:
  Socket_Option, Integer_Socket_Option.

typedef implementation_defined boost::asio::socket_base::reuse_address `[inherited]`

Socket option to allow the socket to be bound to an address that is already in use.

Implements the SOL_SOCKET/SO_REUSEADDR socket option.

Examples:
  Setting the option:

       boost::asio::ip::tcp::acceptor acceptor(io_service);
       ...
       boost::asio::socket_base::reuse_address option(true);
       acceptor.set_option(option);

  Getting the current option value:

       boost::asio::ip::tcp::acceptor acceptor(io_service);
       ...
       boost::asio::socket_base::reuse_address option;
       acceptor.get_option(option);
       bool is_set = option.get();

Concepts:
  Socket_Option, Boolean_Socket_Option.

typedef implementation_defined boost::asio::socket_base::linger `[inherited]`

Socket option to specify whether the socket lingers on close if unsent data is present.

Implements the SOL_SOCKET/SO_LINGER socket option.

Examples:
  Setting the option:

       boost::asio::ip::tcp::socket socket(io_service);
       ...
       boost::asio::socket_base::linger option(true, 30);
       socket.set_option(option);

  Getting the current option value:

       boost::asio::ip::tcp::socket socket(io_service);
       ...
       boost::asio::socket_base::linger option;
       socket.get_option(option);
       bool is_set = option.enabled();
       unsigned short timeout = option.timeout();

Concepts:
  Socket_Option, Linger_Socket_Option.

typedef implementation_defined boost::asio::socket_base::enable_connection_aborted `[inherited]`

Socket option to report aborted connections on accept.

Implements a custom socket option that determines whether or not an accept operation is permitted to fail with boost::asio::error::connection_aborted. By default the option is false.

Examples:
  Setting the option:

       boost::asio::ip::tcp::acceptor acceptor(io_service);
       ...
       boost::asio::socket_base::enable_connection_aborted option(true);
       acceptor.set_option(option);

  Getting the current option value:

       boost::asio::ip::tcp::acceptor acceptor(io_service);
       ...
       boost::asio::socket_base::enable_connection_aborted option;
       acceptor.get_option(option);
       bool is_set = option.get();

Concepts:
  Socket_Option, Boolean_Socket_Option.

typedef implementation_defined boost::asio::socket_base::non_blocking_io `[inherited]`

IO control command to set the blocking mode of the socket.

Implements the FIONBIO IO control command.

Example:

       boost::asio::ip::tcp::socket socket(io_service);
       ...
       boost::asio::socket_base::non_blocking_io command(true);
       socket.io_control(command);

Concepts:
  IO_Control_Command, Boolean_IO_Control_Command.

typedef implementation_defined boost::asio::socket_base::bytes_readable `[inherited]`

IO control command to get the amount of data that can be read without blocking.

Implements the FIONREAD IO control command.

Example:

       boost::asio::ip::tcp::socket socket(io_service);
       ...
       boost::asio::socket_base::bytes_readable command(true);
       socket.io_control(command);
       std::size_t bytes_readable = command.get();

Concepts:
  IO_Control_Command, Size_IO_Control_Command.

## Member Enumeration Documentation

enum boost::asio::socket_base::shutdown_type `[inherited]`

Different ways a socket may be shutdown.

Enumerator:

  shutdown_receive | Shutdown the receive side of the socket.
  shutdown_send | Shutdown the send side of the socket.
  shutdown_both | Shutdown both send and receive on the socket.

## Constructor & Destructor Documentation

template<typename Protocol, typename Service = socket_acceptor_service<Protocol>>

boost::asio::basic_socket_acceptor< Protocol, Service >::basic_socket_acceptor | ( | boost::asio::io_service & | io_service | ) | `[explicit]`

Construct an acceptor without opening it.

This constructor creates an acceptor without opening it to listen for new connections. The open() function must be called before the acceptor can accept new socket connections.

Parameters:

  | io_service | The io_service object that the acceptor will use to dispatch handlers for any asynchronous operations performed on the acceptor.

template<typename Protocol, typename Service = socket_acceptor_service<Protocol>>

boost::asio::basic_socket_acceptor< Protocol, Service >::basic_socket_acceptor | ( | boost::asio::io_service & | io_service,
|  | const protocol_type & | protocol |
| ) |  |  |

Construct an open acceptor.

This constructor creates an acceptor and automatically opens it.

Parameters:

  | io_service | The io_service object that the acceptor will use to dispatch handlers for any asynchronous operations performed on the acceptor.
  | protocol | An object specifying protocol parameters to be used.

Exceptions:

  | boost::asio::error | Thrown on failure.

template<typename Protocol, typename Service = socket_acceptor_service<Protocol>>

boost::asio::basic_socket_acceptor< Protocol, Service >::basic_socket_acceptor | ( | boost::asio::io_service & | io_service,
|  | const endpoint_type & | endpoint,
|  | int | listen_backlog = `0` |
| ) |  |  |

Construct an acceptor opened on the given endpoint.

This constructor creates an acceptor and automatically opens it to listen for new connections on the specified endpoint.

Parameters:

  | io_service | The io_service object that the acceptor will use to dispatch handlers for any asynchronous operations performed on the acceptor.
  | endpoint | An endpoint on the local machine on which the acceptor will listen for new connections.
  | listen_backlog | The maximum length of the queue of pending connections. A value of 0 means use the default queue length.

Exceptions:

  | boost::asio::error | Thrown on failure.

Note:
  This constructor is equivalent to the following code:

       basic_socket_acceptor<Protocol> acceptor(io_service);
       acceptor.open(endpoint.protocol());
       acceptor.bind(endpoint);
       acceptor.listen(listen_backlog);

template<typename Protocol, typename Service = socket_acceptor_service<Protocol>>

boost::asio::basic_socket_acceptor< Protocol, Service >::basic_socket_acceptor | ( | boost::asio::io_service & | io_service,
|  | const protocol_type & | protocol,
|  | const native_type & | native_acceptor |
| ) |  |  |

Construct a basic_socket_acceptor on an existing native acceptor.

This constructor creates an acceptor object to hold an existing native acceptor.

Parameters:

  | io_service | The io_service object that the acceptor will use to dispatch handlers for any asynchronous operations performed on the acceptor.
  | protocol | An object specifying protocol parameters to be used.
  | native_acceptor | A native acceptor.

Exceptions:

  | boost::asio::error | Thrown on failure.

## Member Function Documentation

template<typename Protocol, typename Service = socket_acceptor_service<Protocol>>

void boost::asio::basic_socket_acceptor< Protocol, Service >::open | ( | const protocol_type & | protocol = `protocol_type()` | ) |

Open the acceptor using the specified protocol.

This function opens the socket acceptor so that it will use the specified protocol.

Parameters:

  | protocol | An object specifying which protocol is to be used.

Example:

       boost::asio::ip::tcp::acceptor acceptor(io_service);
       acceptor.open(boost::asio::ip::tcp::v4());

template<typename Protocol, typename Service = socket_acceptor_service<Protocol>>
template<typename Error_Handler>

void boost::asio::basic_socket_acceptor< Protocol, Service >::open | ( | const protocol_type & | protocol,
|  | Error_Handler | error_handler |
| ) |  |  |

Open the acceptor using the specified protocol.

This function opens the socket acceptor so that it will use the specified protocol.

Parameters:

  | protocol | An object specifying which protocol is to be used.

  error_handler

  A handler to be called when the operation completes, to indicate whether or not an error has occurred. Copies will be made of the handler as required. The function signature of the handler must be:

       void error_handler(
         const boost::asio::error& error // Result of operation
       );

Example:

       boost::asio::ip::tcp::acceptor acceptor(io_service);
       boost::asio::error error;
       acceptor.open(boost::asio::ip::tcp::v4(),
           boost::asio::assign_error(error));
       if (error)
       {
         // An error occurred.
       }

template<typename Protocol, typename Service = socket_acceptor_service<Protocol>>

void boost::asio::basic_socket_acceptor< Protocol, Service >::assign | ( | const protocol_type & | protocol,
|  | const native_type & | native_acceptor |
| ) |  |  |

Assigns an existing native acceptor to the acceptor.

template<typename Protocol, typename Service = socket_acceptor_service<Protocol>>
template<typename Error_Handler>

void boost::asio::basic_socket_acceptor< Protocol, Service >::assign | ( | const protocol_type & | protocol,
|  | const native_type & | native_acceptor,
|  | Error_Handler | error_handler |
| ) |  |  |

Assigns an existing native acceptor to the acceptor.

template<typename Protocol, typename Service = socket_acceptor_service<Protocol>>

void boost::asio::basic_socket_acceptor< Protocol, Service >::bind | ( | const endpoint_type & | endpoint | ) |

Bind the acceptor to the given local endpoint.

This function binds the socket acceptor to the specified endpoint on the local machine.

Parameters:

  | endpoint | An endpoint on the local machine to which the socket acceptor will be bound.

Exceptions:

  | boost::asio::error | Thrown on failure.

Example:

       boost::asio::ip::tcp::acceptor acceptor(io_service);
       acceptor.open(boost::asio::ip::tcp::v4());
       acceptor.bind(boost::asio::ip::tcp::endpoint(12345));

template<typename Protocol, typename Service = socket_acceptor_service<Protocol>>
template<typename Error_Handler>

void boost::asio::basic_socket_acceptor< Protocol, Service >::bind | ( | const endpoint_type & | endpoint,
|  | Error_Handler | error_handler |
| ) |  |  |

Bind the acceptor to the given local endpoint.

This function binds the socket acceptor to the specified endpoint on the local machine.

Parameters:

  | endpoint | An endpoint on the local machine to which the socket acceptor will be bound.

  error_handler

  A handler to be called when the operation completes, to indicate whether or not an error has occurred. Copies will be made of the handler as required. The function signature of the handler must be:

       void error_handler(
         const boost::asio::error& error // Result of operation
       );

Example:

       boost::asio::ip::tcp::acceptor acceptor(io_service);
       acceptor.open(boost::asio::ip::tcp::v4());
       boost::asio::error error;
       acceptor.bind(boost::asio::ip::tcp::endpoint(12345),
           boost::asio::assign_error(error));
       if (error)
       {
         // An error occurred.
       }

template<typename Protocol, typename Service = socket_acceptor_service<Protocol>>

void boost::asio::basic_socket_acceptor< Protocol, Service >::listen | ( | int | backlog = `0` | ) |

Place the acceptor into the state where it will listen for new connections.

This function puts the socket acceptor into the state where it may accept new connections.

Parameters:

  | backlog | The maximum length of the queue of pending connections. A value of 0 means use the default queue length.

template<typename Protocol, typename Service = socket_acceptor_service<Protocol>>
template<typename Error_Handler>

void boost::asio::basic_socket_acceptor< Protocol, Service >::listen | ( | int | backlog,
|  | Error_Handler | error_handler |
| ) |  |  |

Place the acceptor into the state where it will listen for new connections.

This function puts the socket acceptor into the state where it may accept new connections.

Parameters:

  | backlog | The maximum length of the queue of pending connections. A value of 0 means use the default queue length.

  error_handler

  A handler to be called when the operation completes, to indicate whether or not an error has occurred. Copies will be made of the handler as required. The function signature of the handler must be:

       void error_handler(
         const boost::asio::error& error // Result of operation
       );

Example:

       boost::asio::ip::tcp::acceptor acceptor(io_service);
       ...
       boost::asio::error error;
       acceptor.listen(0, boost::asio::assign_error(error));
       if (error)
       {
         // An error occurred.
       }

template<typename Protocol, typename Service = socket_acceptor_service<Protocol>>

void boost::asio::basic_socket_acceptor< Protocol, Service >::close | ( |  | ) |

Close the acceptor.

This function is used to close the acceptor. Any asynchronous accept operations will be cancelled immediately.

A subsequent call to open() is required before the acceptor can again be used to again perform socket accept operations.

Exceptions:

  | boost::asio::error | Thrown on failure.

template<typename Protocol, typename Service = socket_acceptor_service<Protocol>>
template<typename Error_Handler>

void boost::asio::basic_socket_acceptor< Protocol, Service >::close | ( | Error_Handler | error_handler | ) |

Close the acceptor.

This function is used to close the acceptor. Any asynchronous accept operations will be cancelled immediately.

A subsequent call to open() is required before the acceptor can again be used to again perform socket accept operations.

Parameters:

  error_handler

  A handler to be called when the operation completes, to indicate whether or not an error has occurred. Copies will be made of the handler as required. The function signature of the handler must be:

       void error_handler(
         const boost::asio::error& error // Result of operation
       );

Example:

       boost::asio::ip::tcp::acceptor acceptor(io_service);
       ...
       boost::asio::error error;
       acceptor.close(boost::asio::assign_error(error));
       if (error)
       {
         // An error occurred.
       }

template<typename Protocol, typename Service = socket_acceptor_service<Protocol>>

native_type boost::asio::basic_socket_acceptor< Protocol, Service >::native | ( |  | ) |

Get the native acceptor representation.

This function may be used to obtain the underlying representation of the acceptor. This is intended to allow access to native acceptor functionality that is not otherwise provided.

template<typename Protocol, typename Service = socket_acceptor_service<Protocol>>
template<typename Option>

void boost::asio::basic_socket_acceptor< Protocol, Service >::set_option | ( | const Option & | option | ) |

Set an option on the acceptor.

This function is used to set an option on the acceptor.

Parameters:

  | option | The new option value to be set on the acceptor.

Exceptions:

  | boost::asio::error | Thrown on failure.

See also:
  Socket_Option
  boost::asio::socket_base::reuse_address boost::asio::socket_base::enable_connection_aborted

Example:
  Setting the SOL_SOCKET/SO_REUSEADDR option:

       boost::asio::ip::tcp::acceptor acceptor(io_service);
       ...
       boost::asio::ip::tcp::acceptor::reuse_address option(true);
       acceptor.set_option(option);

template<typename Protocol, typename Service = socket_acceptor_service<Protocol>>
template<typename Option, typename Error_Handler>

void boost::asio::basic_socket_acceptor< Protocol, Service >::set_option | ( | const Option & | option,
|  | Error_Handler | error_handler |
| ) |  |  |

Set an option on the acceptor.

This function is used to set an option on the acceptor.

Parameters:

  | option | The new option value to be set on the acceptor.

  error_handler

  A handler to be called when the operation completes, to indicate whether or not an error has occurred. Copies will be made of the handler as required. The function signature of the handler must be:

       void error_handler(
         const boost::asio::error& error // Result of operation
       );

See also:
  Socket_Option
  boost::asio::socket_base::reuse_address boost::asio::socket_base::enable_connection_aborted

Example:
  Setting the SOL_SOCKET/SO_REUSEADDR option:

       boost::asio::ip::tcp::acceptor acceptor(io_service);
       ...
       boost::asio::ip::tcp::acceptor::reuse_address option(true);
       boost::asio::error error;
       acceptor.set_option(option, boost::asio::assign_error(error));
       if (error)
       {
         // An error occurred.
       }

template<typename Protocol, typename Service = socket_acceptor_service<Protocol>>
template<typename Option>

void boost::asio::basic_socket_acceptor< Protocol, Service >::get_option | ( | Option & | option | ) |

Get an option from the acceptor.

This function is used to get the current value of an option on the acceptor.

Parameters:

  | option | The option value to be obtained from the acceptor.

Exceptions:

  | boost::asio::error | Thrown on failure.

See also:
  Socket_Option
  boost::asio::socket_base::reuse_address

Example:
  Getting the value of the SOL_SOCKET/SO_REUSEADDR option:

       boost::asio::ip::tcp::acceptor acceptor(io_service);
       ...
       boost::asio::ip::tcp::acceptor::reuse_address option;
       acceptor.get_option(option);
       bool is_set = option.get();

template<typename Protocol, typename Service = socket_acceptor_service<Protocol>>
template<typename Option, typename Error_Handler>

void boost::asio::basic_socket_acceptor< Protocol, Service >::get_option | ( | Option & | option,
|  | Error_Handler | error_handler |
| ) |  |  |

Get an option from the acceptor.

This function is used to get the current value of an option on the acceptor.

Parameters:

  | option | The option value to be obtained from the acceptor.

  error_handler

  A handler to be called when the operation completes, to indicate whether or not an error has occurred. Copies will be made of the handler as required. The function signature of the handler must be:

       void error_handler(
         const boost::asio::error& error // Result of operation
       );

See also:
  Socket_Option
  boost::asio::socket_base::reuse_address

Example:
  Getting the value of the SOL_SOCKET/SO_REUSEADDR option:

       boost::asio::ip::tcp::acceptor acceptor(io_service);
       ...
       boost::asio::ip::tcp::acceptor::reuse_address option;
       boost::asio::error error;
       acceptor.get_option(option, boost::asio::assign_error(error));
       if (error)
       {
         // An error occurred.
       }
       bool is_set = option.get();

template<typename Protocol, typename Service = socket_acceptor_service<Protocol>>

endpoint_type boost::asio::basic_socket_acceptor< Protocol, Service >::local_endpoint | ( |  | ) | const

Get the local endpoint of the acceptor.

This function is used to obtain the locally bound endpoint of the acceptor.

Returns:
  An object that represents the local endpoint of the acceptor.

Exceptions:

  | boost::asio::error | Thrown on failure.

Example:

       boost::asio::ip::tcp::acceptor acceptor(io_service);
       ...
       boost::asio::ip::tcp::endpoint endpoint = acceptor.local_endpoint();

template<typename Protocol, typename Service = socket_acceptor_service<Protocol>>
template<typename Error_Handler>

endpoint_type boost::asio::basic_socket_acceptor< Protocol, Service >::local_endpoint | ( | Error_Handler | error_handler | ) | const

Get the local endpoint of the acceptor.

This function is used to obtain the locally bound endpoint of the acceptor.

Parameters:

  error_handler

  A handler to be called when the operation completes, to indicate whether or not an error has occurred. Copies will be made of the handler as required. The function signature of the handler must be:

       void error_handler(
         const boost::asio::error& error // Result of operation
       );

Returns:
  An object that represents the local endpoint of the acceptor. Returns a default-constructed endpoint object if an error occurred and the error handler did not throw an exception.

Example:

       boost::asio::ip::tcp::acceptor acceptor(io_service);
       ...
       boost::asio::error error;
       boost::asio::ip::tcp::endpoint endpoint
         = acceptor.local_endpoint(boost::asio::assign_error(error));
       if (error)
       {
         // An error occurred.
       }

template<typename Protocol, typename Service = socket_acceptor_service<Protocol>>
template<typename Socket_Service>

void boost::asio::basic_socket_acceptor< Protocol, Service >::accept | ( | basic_socket< protocol_type, Socket_Service > & | peer | ) |

Accept a new connection.

This function is used to accept a new connection from a peer into the given socket. The function call will block until a new connection has been accepted successfully or an error occurs.

Parameters:

  | peer | The socket into which the new connection will be accepted.

Exceptions:

  | boost::asio::error | Thrown on failure.

Example:

       boost::asio::ip::tcp::acceptor acceptor(io_service);
       ...
       boost::asio::ip::tcp::socket socket(io_service);
       acceptor.accept(socket);

template<typename Protocol, typename Service = socket_acceptor_service<Protocol>>
template<typename Socket_Service, typename Error_Handler>

void boost::asio::basic_socket_acceptor< Protocol, Service >::accept | ( | basic_socket< protocol_type, Socket_Service > & | peer,
|  | Error_Handler | error_handler |
| ) |  |  |

Accept a new connection.

This function is used to accept a new connection from a peer into the given socket. The function call will block until a new connection has been accepted successfully or an error occurs.

Parameters:

  | peer | The socket into which the new connection will be accepted.

  error_handler

  A handler to be called when the operation completes, to indicate whether or not an error has occurred. Copies will be made of the handler as required. The function signature of the handler must be:

       void error_handler(
         const boost::asio::error& error // Result of operation
       );

Example:

       boost::asio::ip::tcp::acceptor acceptor(io_service);
       ...
       boost::asio::ip::tcp::soocket socket(io_service);
       boost::asio::error error;
       acceptor.accept(socket, boost::asio::assign_error(error));
       if (error)
       {
         // An error occurred.
       }

template<typename Protocol, typename Service = socket_acceptor_service<Protocol>>
template<typename Socket_Service, typename Handler>

void boost::asio::basic_socket_acceptor< Protocol, Service >::async_accept | ( | basic_socket< protocol_type, Socket_Service > & | peer,
|  | Handler | handler |
| ) |  |  |

Start an asynchronous accept.

This function is used to asynchronously accept a new connection into a socket. The function call always returns immediately.

Parameters:

  | peer | The socket into which the new connection will be accepted. Ownership of the peer object is retained by the caller, which must guarantee that it is valid until the handler is called.

  handler

  The handler to be called when the accept operation completes. Copies will be made of the handler as required. The function signature of the handler must be:

       void handler(
         const boost::asio::error& error // Result of operation
       );

  Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io_service::post().

Example:

       void accept_handler(const boost::asio::error& error)
       {
         if (!error)
         {
           // Accept succeeded.
         }
       }

       ...

       boost::asio::ip::tcp::acceptor acceptor(io_service);
       ...
       boost::asio::ip::tcp::socket socket(io_service);
       acceptor.async_accept(socket, accept_handler);

template<typename Protocol, typename Service = socket_acceptor_service<Protocol>>
template<typename Socket_Service>

void boost::asio::basic_socket_acceptor< Protocol, Service >::accept_endpoint | ( | basic_socket< protocol_type, Socket_Service > & | peer,
|  | endpoint_type & | peer_endpoint |
| ) |  |  |

Accept a new connection and obtain the endpoint of the peer.

This function is used to accept a new connection from a peer into the given socket, and additionally provide the endpoint of the remote peer. The function call will block until a new connection has been accepted successfully or an error occurs.

Parameters:

  | peer | The socket into which the new connection will be accepted.
  | peer_endpoint | An endpoint object which will receive the endpoint of the remote peer.

Exceptions:

  | boost::asio::error | Thrown on failure.

Example:

       boost::asio::ip::tcp::acceptor acceptor(io_service);
       ...
       boost::asio::ip::tcp::socket socket(io_service);
       boost::asio::ip::tcp::endpoint endpoint;
       acceptor.accept_endpoint(socket, endpoint);

template<typename Protocol, typename Service = socket_acceptor_service<Protocol>>
template<typename Socket_Service, typename Error_Handler>

void boost::asio::basic_socket_acceptor< Protocol, Service >::accept_endpoint | ( | basic_socket< protocol_type, Socket_Service > & | peer,
|  | endpoint_type & | peer_endpoint,
|  | Error_Handler | error_handler |
| ) |  |  |

Accept a new connection and obtain the endpoint of the peer.

This function is used to accept a new connection from a peer into the given socket, and additionally provide the endpoint of the remote peer. The function call will block until a new connection has been accepted successfully or an error occurs.

Parameters:

  | peer | The socket into which the new connection will be accepted.
  | peer_endpoint | An endpoint object which will receive the endpoint of the remote peer.

  error_handler

  A handler to be called when the operation completes, to indicate whether or not an error has occurred. Copies will be made of the handler as required. The function signature of the handler must be:

       void error_handler(
         const boost::asio::error& error // Result of operation
       );

Example:

       boost::asio::ip::tcp::acceptor acceptor(io_service);
       ...
       boost::asio::ip::tcp::socket socket(io_service);
       boost::asio::ip::tcp::endpoint endpoint;
       boost::asio::error error;
       acceptor.accept_endpoint(socket, endpoint,
           boost::asio::assign_error(error));
       if (error)
       {
         // An error occurred.
       }

template<typename Protocol, typename Service = socket_acceptor_service<Protocol>>
template<typename Socket_Service, typename Handler>

void boost::asio::basic_socket_acceptor< Protocol, Service >::async_accept_endpoint | ( | basic_socket< protocol_type, Socket_Service > & | peer,
|  | endpoint_type & | peer_endpoint,
|  | Handler | handler |
| ) |  |  |

Start an asynchronous accept.

This function is used to asynchronously accept a new connection into a socket, and additionally obtain the endpoint of the remote peer. The function call always returns immediately.

Parameters:

  | peer | The socket into which the new connection will be accepted. Ownership of the peer object is retained by the caller, which must guarantee that it is valid until the handler is called.
  | peer_endpoint | An endpoint object into which the endpoint of the remote peer will be written. Ownership of the peer_endpoint object is retained by the caller, which must guarantee that it is valid until the handler is called.

  handler

  The handler to be called when the accept operation completes. Copies will be made of the handler as required. The function signature of the handler must be:

       void handler(
         const boost::asio::error& error // Result of operation
       );

  Regardless of whether the asynchronous operation completes immediately or not, the handler will not be invoked from within this function. Invocation of the handler will be performed in a manner equivalent to using boost::asio::io_service::post().

template<typename Service>

boost::asio::io_service& boost::asio::basic_io_object< Service >::io_service | ( |  | ) | `[inherited]`

Get the io_service associated with the object.

This function may be used to obtain the io_service object that the I/O object uses to dispatch handlers for asynchronous operations.

Returns:
  A reference to the io_service object that the I/O object will use to dispatch handlers. Ownership is not transferred to the caller.

## Member Data Documentation

const int boost::asio::socket_base::message_peek = implementation_defined`[static, inherited]`

Peek at incoming data without removing it from the input queue.

const int boost::asio::socket_base::message_out_of_band = implementation_defined`[static, inherited]`

Process out-of-band data.

const int boost::asio::socket_base::message_do_not_route = implementation_defined`[static, inherited]`

Specify that the data should not be subject to routing.

| Copyright © 2003 - 2006 Christopher M. Kohlhoff