123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556 |
- [/
- / Copyright (c) 2003-2019 Christopher M. Kohlhoff (chris at kohlhoff dot com)
- /
- / Distributed under the Boost Software License, Version 1.0. (See accompanying
- / file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- /]
- [section:examples Examples]
- * [link boost_asio.examples.cpp03_examples C++03 Examples]: Illustrates the use of
- Boost.Asio using only C++03 language and library features. Where necessary, the
- examples make use of selected Boost C++ libraries.
- * [link boost_asio.examples.cpp11_examples C++11 Examples]: Contains a limited set of
- the C++03 Boost.Asio examples, updated to use only C++11 library and language
- facilities. These examples do not make direct use of Boost C++ libraries.
- * [link boost_asio.examples.cpp17_examples C++17 Examples]: Selected examples
- illustrating C++17 usage in conjunction with Technical Specifications.
- [section:cpp03_examples C++03 Examples]
- [heading Allocation]
- This example shows how to customise the allocation of memory associated with
- asynchronous operations.
- * [@boost_asio/example/cpp03/allocation/server.cpp]
- [heading Buffers]
- This example demonstrates how to create reference counted buffers that can be
- used with socket read and write operations.
- * [@boost_asio/example/cpp03/buffers/reference_counted.cpp]
- [heading Chat]
- This example implements a chat server and client. The programs use a custom
- protocol with a fixed length message header and variable length message body.
- * [@boost_asio/example/cpp03/chat/chat_message.hpp]
- * [@boost_asio/example/cpp03/chat/chat_client.cpp]
- * [@boost_asio/example/cpp03/chat/chat_server.cpp]
- The following POSIX-specific chat client demonstrates how to use the
- [link boost_asio.reference.posix__stream_descriptor posix::stream_descriptor] class to
- perform console input and output.
- * [@boost_asio/example/cpp03/chat/posix_chat_client.cpp]
- [heading Echo]
- A collection of simple clients and servers, showing the use of both synchronous
- and asynchronous operations.
- * [@boost_asio/example/cpp03/echo/async_tcp_echo_server.cpp]
- * [@boost_asio/example/cpp03/echo/async_udp_echo_server.cpp]
- * [@boost_asio/example/cpp03/echo/blocking_tcp_echo_client.cpp]
- * [@boost_asio/example/cpp03/echo/blocking_tcp_echo_server.cpp]
- * [@boost_asio/example/cpp03/echo/blocking_udp_echo_client.cpp]
- * [@boost_asio/example/cpp03/echo/blocking_udp_echo_server.cpp]
- [heading Fork]
- These POSIX-specific examples show how to use Boost.Asio in conjunction with the
- `fork()` system call. The first example illustrates the steps required to start
- a daemon process:
- * [@boost_asio/example/cpp03/fork/daemon.cpp]
- The second example demonstrates how it is possible to fork a process from
- within a completion handler.
- * [@boost_asio/example/cpp03/fork/process_per_connection.cpp]
- [heading HTTP Client]
- Example programs implementing simple HTTP 1.0 clients. These examples show how
- to use the [link boost_asio.reference.read_until read_until] and [link
- boost_asio.reference.async_read_until async_read_until] functions.
- * [@boost_asio/example/cpp03/http/client/sync_client.cpp]
- * [@boost_asio/example/cpp03/http/client/async_client.cpp]
- [heading HTTP Server]
- This example illustrates the use of asio in a simple single-threaded server
- implementation of HTTP 1.0. It demonstrates how to perform a clean shutdown by
- cancelling all outstanding asynchronous operations.
- * [@boost_asio/example/cpp03/http/server/connection.cpp]
- * [@boost_asio/example/cpp03/http/server/connection.hpp]
- * [@boost_asio/example/cpp03/http/server/connection_manager.cpp]
- * [@boost_asio/example/cpp03/http/server/connection_manager.hpp]
- * [@boost_asio/example/cpp03/http/server/header.hpp]
- * [@boost_asio/example/cpp03/http/server/main.cpp]
- * [@boost_asio/example/cpp03/http/server/mime_types.cpp]
- * [@boost_asio/example/cpp03/http/server/mime_types.hpp]
- * [@boost_asio/example/cpp03/http/server/reply.cpp]
- * [@boost_asio/example/cpp03/http/server/reply.hpp]
- * [@boost_asio/example/cpp03/http/server/request.hpp]
- * [@boost_asio/example/cpp03/http/server/request_handler.cpp]
- * [@boost_asio/example/cpp03/http/server/request_handler.hpp]
- * [@boost_asio/example/cpp03/http/server/request_parser.cpp]
- * [@boost_asio/example/cpp03/http/server/request_parser.hpp]
- * [@boost_asio/example/cpp03/http/server/server.cpp]
- * [@boost_asio/example/cpp03/http/server/server.hpp]
- [heading HTTP Server 2]
- An HTTP server using an io_context-per-CPU design.
- * [@boost_asio/example/cpp03/http/server2/connection.cpp]
- * [@boost_asio/example/cpp03/http/server2/connection.hpp]
- * [@boost_asio/example/cpp03/http/server2/header.hpp]
- * [@boost_asio/example/cpp03/http/server2/io_context_pool.cpp]
- * [@boost_asio/example/cpp03/http/server2/io_context_pool.hpp]
- * [@boost_asio/example/cpp03/http/server2/main.cpp]
- * [@boost_asio/example/cpp03/http/server2/mime_types.cpp]
- * [@boost_asio/example/cpp03/http/server2/mime_types.hpp]
- * [@boost_asio/example/cpp03/http/server2/reply.cpp]
- * [@boost_asio/example/cpp03/http/server2/reply.hpp]
- * [@boost_asio/example/cpp03/http/server2/request.hpp]
- * [@boost_asio/example/cpp03/http/server2/request_handler.cpp]
- * [@boost_asio/example/cpp03/http/server2/request_handler.hpp]
- * [@boost_asio/example/cpp03/http/server2/request_parser.cpp]
- * [@boost_asio/example/cpp03/http/server2/request_parser.hpp]
- * [@boost_asio/example/cpp03/http/server2/server.cpp]
- * [@boost_asio/example/cpp03/http/server2/server.hpp]
- [heading HTTP Server 3]
- An HTTP server using a single io_context and a thread pool calling `io_context::run()`.
- * [@boost_asio/example/cpp03/http/server3/connection.cpp]
- * [@boost_asio/example/cpp03/http/server3/connection.hpp]
- * [@boost_asio/example/cpp03/http/server3/header.hpp]
- * [@boost_asio/example/cpp03/http/server3/main.cpp]
- * [@boost_asio/example/cpp03/http/server3/mime_types.cpp]
- * [@boost_asio/example/cpp03/http/server3/mime_types.hpp]
- * [@boost_asio/example/cpp03/http/server3/reply.cpp]
- * [@boost_asio/example/cpp03/http/server3/reply.hpp]
- * [@boost_asio/example/cpp03/http/server3/request.hpp]
- * [@boost_asio/example/cpp03/http/server3/request_handler.cpp]
- * [@boost_asio/example/cpp03/http/server3/request_handler.hpp]
- * [@boost_asio/example/cpp03/http/server3/request_parser.cpp]
- * [@boost_asio/example/cpp03/http/server3/request_parser.hpp]
- * [@boost_asio/example/cpp03/http/server3/server.cpp]
- * [@boost_asio/example/cpp03/http/server3/server.hpp]
- [heading HTTP Server 4]
- A single-threaded HTTP server implemented using stackless coroutines.
- * [@boost_asio/example/cpp03/http/server4/file_handler.cpp]
- * [@boost_asio/example/cpp03/http/server4/file_handler.hpp]
- * [@boost_asio/example/cpp03/http/server4/header.hpp]
- * [@boost_asio/example/cpp03/http/server4/main.cpp]
- * [@boost_asio/example/cpp03/http/server4/mime_types.cpp]
- * [@boost_asio/example/cpp03/http/server4/mime_types.hpp]
- * [@boost_asio/example/cpp03/http/server4/reply.cpp]
- * [@boost_asio/example/cpp03/http/server4/reply.hpp]
- * [@boost_asio/example/cpp03/http/server4/request.hpp]
- * [@boost_asio/example/cpp03/http/server4/request_parser.cpp]
- * [@boost_asio/example/cpp03/http/server4/request_parser.hpp]
- * [@boost_asio/example/cpp03/http/server4/server.cpp]
- * [@boost_asio/example/cpp03/http/server4/server.hpp]
- [heading ICMP]
- This example shows how to use raw sockets with ICMP to ping a remote host.
- * [@boost_asio/example/cpp03/icmp/ping.cpp]
- * [@boost_asio/example/cpp03/icmp/ipv4_header.hpp]
- * [@boost_asio/example/cpp03/icmp/icmp_header.hpp]
- [heading Invocation]
- This example shows how to customise handler invocation. Completion handlers are
- added to a priority queue rather than executed immediately.
- * [@boost_asio/example/cpp03/invocation/prioritised_handlers.cpp]
- [heading Iostreams]
- Two examples showing how to use [link boost_asio.reference.ip__tcp.iostream
- ip::tcp::iostream].
- * [@boost_asio/example/cpp03/iostreams/daytime_client.cpp]
- * [@boost_asio/example/cpp03/iostreams/daytime_server.cpp]
- * [@boost_asio/example/cpp03/iostreams/http_client.cpp]
- [heading Multicast]
- An example showing the use of multicast to transmit packets to a group of
- subscribers.
- * [@boost_asio/example/cpp03/multicast/receiver.cpp]
- * [@boost_asio/example/cpp03/multicast/sender.cpp]
- [heading Serialization]
- This example shows how Boost.Serialization can be used with asio to encode and
- decode structures for transmission over a socket.
- * [@boost_asio/example/cpp03/serialization/client.cpp]
- * [@boost_asio/example/cpp03/serialization/connection.hpp]
- * [@boost_asio/example/cpp03/serialization/server.cpp]
- * [@boost_asio/example/cpp03/serialization/stock.hpp]
- [heading Services]
- This example demonstrates how to integrate custom functionality (in this case,
- for logging) into asio's [link boost_asio.reference.io_context io_context], and
- how to use a custom service with [link
- boost_asio.reference.basic_stream_socket basic_stream_socket<>].
- * [@boost_asio/example/cpp03/services/basic_logger.hpp]
- * [@boost_asio/example/cpp03/services/daytime_client.cpp]
- * [@boost_asio/example/cpp03/services/logger.hpp]
- * [@boost_asio/example/cpp03/services/logger_service.cpp]
- * [@boost_asio/example/cpp03/services/logger_service.hpp]
- * [@boost_asio/example/cpp03/services/stream_socket_service.hpp]
- [heading SOCKS 4]
- Example client program implementing the SOCKS 4 protocol for communication via
- a proxy.
- * [@boost_asio/example/cpp03/socks4/sync_client.cpp]
- * [@boost_asio/example/cpp03/socks4/socks4.hpp]
- [heading SSL]
- Example client and server programs showing the use of the [link
- boost_asio.reference.ssl__stream ssl::stream<>] template with asynchronous operations.
- * [@boost_asio/example/cpp03/ssl/client.cpp]
- * [@boost_asio/example/cpp03/ssl/server.cpp]
- [heading Timeouts]
- A collection of examples showing how to cancel long running asynchronous
- operations after a period of time.
- * [@boost_asio/example/cpp03/timeouts/async_tcp_client.cpp]
- * [@boost_asio/example/cpp03/timeouts/blocking_tcp_client.cpp]
- * [@boost_asio/example/cpp03/timeouts/blocking_token_tcp_client.cpp]
- * [@boost_asio/example/cpp03/timeouts/blocking_udp_client.cpp]
- * [@boost_asio/example/cpp03/timeouts/server.cpp]
- [heading Timers]
- Example showing how to customise basic_waitable_timer using a different clock type.
- * [@boost_asio/example/cpp03/timers/time_t_timer.cpp]
- [heading Porthopper]
- Example illustrating mixed synchronous and asynchronous operations, and how to
- use Boost.Lambda with Boost.Asio.
- * [@boost_asio/example/cpp03/porthopper/protocol.hpp]
- * [@boost_asio/example/cpp03/porthopper/client.cpp]
- * [@boost_asio/example/cpp03/porthopper/server.cpp]
- [heading Nonblocking]
- Example demonstrating reactor-style operations for integrating a third-party
- library that wants to perform the I/O operations itself.
- * [@boost_asio/example/cpp03/nonblocking/third_party_lib.cpp]
- [heading Spawn]
- Example of using the boost::asio::spawn() function, a wrapper around the
- [@http://www.boost.org/doc/libs/release/libs/coroutine/index.html Boost.Coroutine]
- library, to implement a chain of asynchronous operations using stackful
- coroutines.
- * [@boost_asio/example/cpp03/spawn/echo_server.cpp]
- [heading UNIX Domain Sockets]
- Examples showing how to use UNIX domain (local) sockets.
- * [@boost_asio/example/cpp03/local/connect_pair.cpp]
- * [@boost_asio/example/cpp03/local/iostream_client.cpp]
- * [@boost_asio/example/cpp03/local/stream_server.cpp]
- * [@boost_asio/example/cpp03/local/stream_client.cpp]
- [heading Windows]
- An example showing how to use the Windows-specific function `TransmitFile`
- with Boost.Asio.
- * [@boost_asio/example/cpp03/windows/transmit_file.cpp]
- [endsect]
- [section:cpp11_examples C++11 Examples]
- [heading Allocation]
- This example shows how to customise the allocation of memory associated with
- asynchronous operations.
- * [@boost_asio/example/cpp11/allocation/server.cpp]
- [heading Buffers]
- This example demonstrates how to create reference counted buffers that can be
- used with socket read and write operations.
- * [@boost_asio/example/cpp11/buffers/reference_counted.cpp]
- [heading Chat]
- This example implements a chat server and client. The programs use a custom
- protocol with a fixed length message header and variable length message body.
- * [@boost_asio/example/cpp11/chat/chat_message.hpp]
- * [@boost_asio/example/cpp11/chat/chat_client.cpp]
- * [@boost_asio/example/cpp11/chat/chat_server.cpp]
- [heading Echo]
- A collection of simple clients and servers, showing the use of both synchronous
- and asynchronous operations.
- * [@boost_asio/example/cpp11/echo/async_tcp_echo_server.cpp]
- * [@boost_asio/example/cpp11/echo/async_udp_echo_server.cpp]
- * [@boost_asio/example/cpp11/echo/blocking_tcp_echo_client.cpp]
- * [@boost_asio/example/cpp11/echo/blocking_tcp_echo_server.cpp]
- * [@boost_asio/example/cpp11/echo/blocking_udp_echo_client.cpp]
- * [@boost_asio/example/cpp11/echo/blocking_udp_echo_server.cpp]
- [heading Fork]
- These POSIX-specific examples show how to use Boost.Asio in conjunction with the
- `fork()` system call. The first example illustrates the steps required to start
- a daemon process:
- * [@boost_asio/example/cpp11/fork/daemon.cpp]
- The second example demonstrates how it is possible to fork a process from
- within a completion handler.
- * [@boost_asio/example/cpp11/fork/process_per_connection.cpp]
- [heading Futures]
- This example demonstrates how to use std::future in conjunction with
- Boost.Asio's asynchronous operations.
- * [@boost_asio/example/cpp11/futures/daytime_client.cpp]
- [heading Handler Tracking]
- This example shows how to implement custom handler tracking.
- * [@boost_asio/example/cpp11/handler_tracking/custom_tracking.hpp]
- [heading HTTP Server]
- This example illustrates the use of asio in a simple single-threaded server
- implementation of HTTP 1.0. It demonstrates how to perform a clean shutdown by
- cancelling all outstanding asynchronous operations.
- * [@boost_asio/example/cpp11/http/server/connection.cpp]
- * [@boost_asio/example/cpp11/http/server/connection.hpp]
- * [@boost_asio/example/cpp11/http/server/connection_manager.cpp]
- * [@boost_asio/example/cpp11/http/server/connection_manager.hpp]
- * [@boost_asio/example/cpp11/http/server/header.hpp]
- * [@boost_asio/example/cpp11/http/server/main.cpp]
- * [@boost_asio/example/cpp11/http/server/mime_types.cpp]
- * [@boost_asio/example/cpp11/http/server/mime_types.hpp]
- * [@boost_asio/example/cpp11/http/server/reply.cpp]
- * [@boost_asio/example/cpp11/http/server/reply.hpp]
- * [@boost_asio/example/cpp11/http/server/request.hpp]
- * [@boost_asio/example/cpp11/http/server/request_handler.cpp]
- * [@boost_asio/example/cpp11/http/server/request_handler.hpp]
- * [@boost_asio/example/cpp11/http/server/request_parser.cpp]
- * [@boost_asio/example/cpp11/http/server/request_parser.hpp]
- * [@boost_asio/example/cpp11/http/server/server.cpp]
- * [@boost_asio/example/cpp11/http/server/server.hpp]
- [heading Multicast]
- An example showing the use of multicast to transmit packets to a group of
- subscribers.
- * [@boost_asio/example/cpp11/multicast/receiver.cpp]
- * [@boost_asio/example/cpp11/multicast/sender.cpp]
- [heading Nonblocking]
- Example demonstrating reactor-style operations for integrating a third-party
- library that wants to perform the I/O operations itself.
- * [@boost_asio/example/cpp11/nonblocking/third_party_lib.cpp]
- [heading Operations]
- Examples showing how to implement composed asynchronous operations as reusable library functions.
- * [@boost_asio/example/cpp11/operations/composed_1.cpp]
- * [@boost_asio/example/cpp11/operations/composed_2.cpp]
- * [@boost_asio/example/cpp11/operations/composed_3.cpp]
- * [@boost_asio/example/cpp11/operations/composed_4.cpp]
- * [@boost_asio/example/cpp11/operations/composed_5.cpp]
- * [@boost_asio/example/cpp11/operations/composed_6.cpp]
- * [@boost_asio/example/cpp11/operations/composed_7.cpp]
- * [@boost_asio/example/cpp11/operations/composed_8.cpp]
- [heading SOCKS 4]
- Example client program implementing the SOCKS 4 protocol for communication via
- a proxy.
- * [@boost_asio/example/cpp11/socks4/sync_client.cpp]
- * [@boost_asio/example/cpp11/socks4/socks4.hpp]
- [heading Spawn]
- Example of using the boost::asio::spawn() function, a wrapper around the
- [@http://www.boost.org/doc/libs/release/libs/coroutine/index.html Boost.Coroutine]
- library, to implement a chain of asynchronous operations using stackful
- coroutines.
- * [@boost_asio/example/cpp11/spawn/echo_server.cpp]
- [heading SSL]
- Example client and server programs showing the use of the [link
- boost_asio.reference.ssl__stream ssl::stream<>] template with asynchronous operations.
- * [@boost_asio/example/cpp11/ssl/client.cpp]
- * [@boost_asio/example/cpp11/ssl/server.cpp]
- [heading Timeouts]
- A collection of examples showing how to cancel long running asynchronous
- operations after a period of time.
- * [@boost_asio/example/cpp11/timeouts/async_tcp_client.cpp]
- * [@boost_asio/example/cpp11/timeouts/blocking_tcp_client.cpp]
- * [@boost_asio/example/cpp11/timeouts/blocking_token_tcp_client.cpp]
- * [@boost_asio/example/cpp11/timeouts/blocking_udp_client.cpp]
- * [@boost_asio/example/cpp11/timeouts/server.cpp]
- [heading Timers]
- Example showing how to customise basic_waitable_timer using a different clock type.
- * [@boost_asio/example/cpp11/timers/time_t_timer.cpp]
- [heading UNIX Domain Sockets]
- Examples showing how to use UNIX domain (local) sockets.
- * [@boost_asio/example/cpp11/local/connect_pair.cpp]
- * [@boost_asio/example/cpp11/local/iostream_client.cpp]
- * [@boost_asio/example/cpp11/local/stream_server.cpp]
- * [@boost_asio/example/cpp11/local/stream_client.cpp]
- [endsect]
- [section:cpp14_examples C++14 Examples]
- [heading Operations]
- Examples showing how to implement composed asynchronous operations as reusable library functions.
- * [@boost_asio/example/cpp14/operations/composed_1.cpp]
- * [@boost_asio/example/cpp14/operations/composed_2.cpp]
- * [@boost_asio/example/cpp14/operations/composed_3.cpp]
- * [@boost_asio/example/cpp14/operations/composed_4.cpp]
- * [@boost_asio/example/cpp14/operations/composed_5.cpp]
- * [@boost_asio/example/cpp14/operations/composed_6.cpp]
- * [@boost_asio/example/cpp14/operations/composed_7.cpp]
- * [@boost_asio/example/cpp14/operations/composed_8.cpp]
- [endsect]
- [section:cpp17_examples C++17 Examples]
- [heading Coroutines TS Support]
- Examples showing how to implement a chain of asynchronous operations using the
- Coroutines TS.
- * [@boost_asio/example/cpp17/coroutines_ts/echo_server.cpp]
- * [@boost_asio/example/cpp17/coroutines_ts/refactored_echo_server.cpp]
- * [@boost_asio/example/cpp17/coroutines_ts/double_buffered_echo_server.cpp]
- * [@boost_asio/example/cpp17/coroutines_ts/chat_server.cpp]
- * [@boost_asio/example/cpp17/coroutines_ts/range_based_for.cpp]
- [endsect]
- [endsect]
|