# Extensions for networking

From cppreference.com
< cpp‎ | experimental

The C++ Extensions for Networking, ISO/IEC TS 19216:2018, defines new components for the C++ standard library listed on this page.

The Networking TS is based on the C++14 standard as modified by version 1 of the Library Fundamentals TS. Its design is based on the Asio library.

#### Library named requirements

The following named requirements are used in the normative text of the Networking TS to define the expectations of the library. The burden is on the programmer to ensure that library templates are instantiated with template arguments that satisfy these requirements. Failure to do so may result in very complex compiler diagnostics or in undefined behavior at runtime.

AcceptableProtocol | (named requirement)
AsyncReadStream | (named requirement)
AsyncWriteStream | (named requirement)
CompletionCondition | (named requirement)
CompletionToken | (named requirement)
ConnectCondition | (named requirement)
ConstBufferSequence | represents a set of memory regions that may be used as input to an operation (named requirement)
DynamicBuffer | (named requirement)
EndpointSequence | (named requirement)
ExecutionContext | (named requirement)
Executor | (named requirement)
GettableSocketOption | (named requirement)
InternetProtocol | (named requirement)
IoControlCommand | (named requirement)
MutableBufferSequence | (named requirement)
ProtoAllocator | (named requirement)
Protocol | (named requirement)
Service | (named requirement)
SettableSocketOption | (named requirement)
Signature | (named requirement)
SyncReadStream | (named requirement)
SyncWriteStream | (named requirement)
WaitTraits | (named requirement)

#### Convenience headers

``<experimental/net>`` | convenience header that includes every other Networking TS header
``<experimental/netfwd>`` | contains forward declarations of major Networking TS components

#### Asynchronous model

Defined in header `<experimental/executor>`
Defined in namespace `std::experimental::net`
##### Asynchronous result
async_result | (class template)
async_completion | (class template)
associated_allocator | (class template)
get_associated_allocator | (function template)
##### Execution context and services
execution_context | (class)
use_service | (function template)
make_service | (function template)
has_service | (function template)
service_already_exists | (class)
##### Executors
is_executor | (class template)
executor_arg_t | (class)
uses_executor | (class template)
associated_executor | (class template)
get_associated_executor | (function template)
executor_binder | (class template)
bind_executor | (function template)
executor_work_guard | (class template)
system_executor | (class)
system_context | (class)
executor | (class)
bad_executor | (class)
##### Dispatch/post/defer
dispatch | (function template)
post | (function template)
defer | (function template)
##### Strand
strand | (class template)
##### std::future interop
use_future_t | (class template)

#### Basic I/O services

Defined in header `<experimental/io_context>`
Defined in namespace `std::experimental::net`
io_context | (class)

#### Buffers and buffer-oriented streams

Defined in header `<experimental/buffer>`
Defined in namespace `std::experimental::net`
##### Stream error codes
stream_errc | (function)
stream_category | (enum)
##### Buffers
mutable_buffer | (class)
const_buffer | (class)
buffer | (function template)
###### Buffer type traits
is_mutable_buffer_sequence | (class template)
is_const_buffer_sequence | (class template)
is_dynamic_buffer | (class template)
###### Buffer sequence access
buffer_sequence_begin | (function template)
buffer_sequence_end | (function template)
###### Buffer operations
buffer_size | (function template)
buffer_copy | (function template)
###### Dynamic buffers
dynamic_vector_buffer | (class template)
dynamic_string_buffer | (class template)
dynamic_buffer | (function template)
##### Buffer I/O
transfer_all | (class)
transfer_at_least | (class)
transfer_exactly | (class)
read | (function template)
read_until | (function template)
async_read | (function template)
async_read_until | (function template)
write | (function template)
async_write | (function template)

#### Sockets and socket streams

Defined in header `<experimental/socket>`
Defined in namespace `std::experimental::net`
##### Socket error codes
socket_errc | (enum)
socket_category | (function)
##### Sockets
socket_base | (class)
basic_socket | (class template)
basic_datagram_socket | (class template)
basic_stream_socket | (class template)
basic_socket_acceptor | (class template)
##### Socket streams
basic_socket_streambuf | (class template)
basic_socket_iostream | (class template)
##### Connect operations
connect | (function template)
async_connect | (function template)

#### Internet protocol

Defined in header `<experimental/internet>`
Defined in namespace `std::experimental::net::ip`
##### Resolver error codes
resolver_errc | (enum)
resolver_category | (function)
##### IP addresses
address_v4 | (class)
make_address_v4 | (function template)
address_v6 | (class)
make_address_v6 | (function template)
address | (class)
bad_address_cast | (class)
make_address | (function template)
###### Address iteration
basic_address_iterator | (class template)
basic_address_range | (class template)
##### Networks
network_v4 | (class)
make_network_v4 | (function template)
network_v6 | (class)
make_network_v6 | (function template)
##### Endpoints
basic_endpoint | (class template)
##### Name resolution
basic_resolver_entry | (class template)
basic_resolver_results | (class template)
resolver_base | (class)
basic_resolver | (class template)
##### Host name
host_name | (function template)
##### TCP and UDP sockets
tcp | (class)
udp | (class)
###### Socket options
Defined in namespace `std::experimental::net::ip`
v6_only | (class)
Defined in namespace `std::experimental::net::ip::unicast`
hops | (class)
Defined in namespace `std::experimental::net::ip::multicast`
join_group | (class)
leave_group | (class)
outbound_interface | (class)
hops | (class)
enable_loopback | (class)

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/experimental/networking&oldid=155005"