//
// 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)
//

/**
\mainpage asio Tutorial

\section tuttimer Basic Skills

The tutorial programs in this first section introduce the fundamental concepts
required to use the asio toolkit. Before plunging into the complex world of
network programming, these tutorial programs illustrate the basic skills using
simple asynchronous timers.

\li \ref tuttimer1
\li \ref tuttimer2
\li \ref tuttimer3
\li \ref tuttimer4
\li \ref tuttimer5

\section tutdaytime Introduction to Sockets

The tutorial programs in this section show how to use asio to develop simple
client and server programs. These tutorial programs are based around the <a
href="http://www.ietf.org/rfc/rfc867.txt">daytime</a> protocol, which supports
both TCP and UDP. 

The first three tutorial programs implement the daytime protocol using TCP.

\li \ref tutdaytime1
\li \ref tutdaytime2
\li \ref tutdaytime3

The next three tutorial programs implement the daytime protocol using UDP.

\li \ref tutdaytime4
\li \ref tutdaytime5
\li \ref tutdaytime6

The last tutorial program in this section demonstrates how asio allows the TCP
and UDP servers to be easily combined into a single program.

\li \ref tutdaytime7

*/
