| [/ |
| / Copyright (c) 2003-2010 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] |
| |
| |
| [heading Allocation] |
| |
| This example shows how to customise the allocation of memory associated with |
| asynchronous operations. |
| |
| * [@boost_asio/example/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/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/chat/chat_message.hpp] |
| * [@boost_asio/example/chat/chat_client.cpp] |
| * [@boost_asio/example/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/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/echo/async_tcp_echo_server.cpp] |
| * [@boost_asio/example/echo/async_udp_echo_server.cpp] |
| * [@boost_asio/example/echo/blocking_tcp_echo_client.cpp] |
| * [@boost_asio/example/echo/blocking_tcp_echo_server.cpp] |
| * [@boost_asio/example/echo/blocking_udp_echo_client.cpp] |
| * [@boost_asio/example/echo/blocking_udp_echo_server.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/http/client/sync_client.cpp] |
| * [@boost_asio/example/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/http/server/connection.cpp] |
| * [@boost_asio/example/http/server/connection.hpp] |
| * [@boost_asio/example/http/server/connection_manager.cpp] |
| * [@boost_asio/example/http/server/connection_manager.hpp] |
| * [@boost_asio/example/http/server/header.hpp] |
| * [@boost_asio/example/http/server/mime_types.cpp] |
| * [@boost_asio/example/http/server/mime_types.hpp] |
| * [@boost_asio/example/http/server/posix_main.cpp] |
| * [@boost_asio/example/http/server/reply.cpp] |
| * [@boost_asio/example/http/server/reply.hpp] |
| * [@boost_asio/example/http/server/request.hpp] |
| * [@boost_asio/example/http/server/request_handler.cpp] |
| * [@boost_asio/example/http/server/request_handler.hpp] |
| * [@boost_asio/example/http/server/request_parser.cpp] |
| * [@boost_asio/example/http/server/request_parser.hpp] |
| * [@boost_asio/example/http/server/server.cpp] |
| * [@boost_asio/example/http/server/server.hpp] |
| * [@boost_asio/example/http/server/win_main.cpp] |
| |
| |
| [heading HTTP Server 2] |
| |
| An HTTP server using an io_service-per-CPU design. |
| |
| * [@boost_asio/example/http/server2/connection.cpp] |
| * [@boost_asio/example/http/server2/connection.hpp] |
| * [@boost_asio/example/http/server2/header.hpp] |
| * [@boost_asio/example/http/server2/io_service_pool.cpp] |
| * [@boost_asio/example/http/server2/io_service_pool.hpp] |
| * [@boost_asio/example/http/server2/mime_types.cpp] |
| * [@boost_asio/example/http/server2/mime_types.hpp] |
| * [@boost_asio/example/http/server2/posix_main.cpp] |
| * [@boost_asio/example/http/server2/reply.cpp] |
| * [@boost_asio/example/http/server2/reply.hpp] |
| * [@boost_asio/example/http/server2/request.hpp] |
| * [@boost_asio/example/http/server2/request_handler.cpp] |
| * [@boost_asio/example/http/server2/request_handler.hpp] |
| * [@boost_asio/example/http/server2/request_parser.cpp] |
| * [@boost_asio/example/http/server2/request_parser.hpp] |
| * [@boost_asio/example/http/server2/server.cpp] |
| * [@boost_asio/example/http/server2/server.hpp] |
| * [@boost_asio/example/http/server2/win_main.cpp] |
| |
| |
| [heading HTTP Server 3] |
| |
| An HTTP server using a single io_service and a thread pool calling `io_service::run()`. |
| |
| * [@boost_asio/example/http/server3/connection.cpp] |
| * [@boost_asio/example/http/server3/connection.hpp] |
| * [@boost_asio/example/http/server3/header.hpp] |
| * [@boost_asio/example/http/server3/mime_types.cpp] |
| * [@boost_asio/example/http/server3/mime_types.hpp] |
| * [@boost_asio/example/http/server3/posix_main.cpp] |
| * [@boost_asio/example/http/server3/reply.cpp] |
| * [@boost_asio/example/http/server3/reply.hpp] |
| * [@boost_asio/example/http/server3/request.hpp] |
| * [@boost_asio/example/http/server3/request_handler.cpp] |
| * [@boost_asio/example/http/server3/request_handler.hpp] |
| * [@boost_asio/example/http/server3/request_parser.cpp] |
| * [@boost_asio/example/http/server3/request_parser.hpp] |
| * [@boost_asio/example/http/server3/server.cpp] |
| * [@boost_asio/example/http/server3/server.hpp] |
| * [@boost_asio/example/http/server3/win_main.cpp] |
| |
| |
| [heading HTTP Server 4] |
| |
| A single-threaded HTTP server implemented using stackless coroutines. |
| |
| * [@boost_asio/example/http/server4/coroutine.hpp] |
| * [@boost_asio/example/http/server4/file_handler.cpp] |
| * [@boost_asio/example/http/server4/file_handler.hpp] |
| * [@boost_asio/example/http/server4/header.hpp] |
| * [@boost_asio/example/http/server4/mime_types.cpp] |
| * [@boost_asio/example/http/server4/mime_types.hpp] |
| * [@boost_asio/example/http/server4/posix_main.cpp] |
| * [@boost_asio/example/http/server4/reply.cpp] |
| * [@boost_asio/example/http/server4/reply.hpp] |
| * [@boost_asio/example/http/server4/request.hpp] |
| * [@boost_asio/example/http/server4/request_parser.cpp] |
| * [@boost_asio/example/http/server4/request_parser.hpp] |
| * [@boost_asio/example/http/server4/server.cpp] |
| * [@boost_asio/example/http/server4/server.hpp] |
| * [@boost_asio/example/http/server4/unyield.hpp] |
| * [@boost_asio/example/http/server4/win_main.cpp] |
| * [@boost_asio/example/http/server4/yield.hpp] |
| |
| |
| [heading ICMP] |
| |
| This example shows how to use raw sockets with ICMP to ping a remote host. |
| |
| * [@boost_asio/example/icmp/ping.cpp] |
| * [@boost_asio/example/icmp/ipv4_header.hpp] |
| * [@boost_asio/example/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/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/iostreams/daytime_client.cpp] |
| * [@boost_asio/example/iostreams/daytime_server.cpp] |
| |
| |
| [heading Multicast] |
| |
| An example showing the use of multicast to transmit packets to a group of |
| subscribers. |
| |
| * [@boost_asio/example/multicast/receiver.cpp] |
| * [@boost_asio/example/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/serialization/client.cpp] |
| * [@boost_asio/example/serialization/connection.hpp] |
| * [@boost_asio/example/serialization/server.cpp] |
| * [@boost_asio/example/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_service io_service], and |
| how to use a custom service with [link |
| boost_asio.reference.basic_stream_socket basic_stream_socket<>]. |
| |
| * [@boost_asio/example/services/basic_logger.hpp] |
| * [@boost_asio/example/services/daytime_client.cpp] |
| * [@boost_asio/example/services/logger.hpp] |
| * [@boost_asio/example/services/logger_service.cpp] |
| * [@boost_asio/example/services/logger_service.hpp] |
| * [@boost_asio/example/services/stream_socket_service.hpp] |
| |
| |
| [heading SOCKS 4] |
| |
| Example client program implementing the SOCKS 4 protocol for communication via |
| a proxy. |
| |
| * [@boost_asio/example/socks4/sync_client.cpp] |
| * [@boost_asio/example/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/ssl/client.cpp] |
| * [@boost_asio/example/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/timeouts/async_tcp_client.cpp] |
| * [@boost_asio/example/timeouts/blocking_tcp_client.cpp] |
| * [@boost_asio/example/timeouts/blocking_udp_client.cpp] |
| * [@boost_asio/example/timeouts/server.cpp] |
| |
| |
| [heading Timers] |
| |
| Examples showing how to customise deadline_timer using different time types. |
| |
| * [@boost_asio/example/timers/tick_count_timer.cpp] |
| * [@boost_asio/example/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/porthopper/protocol.hpp] |
| * [@boost_asio/example/porthopper/client.cpp] |
| * [@boost_asio/example/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/nonblocking/third_party_lib.cpp] |
| |
| |
| [heading UNIX Domain Sockets] |
| |
| Examples showing how to use UNIX domain (local) sockets. |
| |
| * [@boost_asio/example/local/connect_pair.cpp] |
| * [@boost_asio/example/local/stream_server.cpp] |
| * [@boost_asio/example/local/stream_client.cpp] |
| |
| |
| [heading Windows] |
| |
| An example showing how to use the Windows-specific function `TransmitFile` |
| with Boost.Asio. |
| |
| * [@boost_asio/example/windows/transmit_file.cpp] |
| |
| |
| [endsect] |