This tutorial is for developers who want to learn how they can add HTTP serving 
capabilities to their applications with the @emph{GNU libmicrohttpd} library,
abbreviated @emph{MHD}.  The reader will learn how to
implement basic HTTP functions from simple executable
sample programs that implement various features.

The text is supposed to be a supplement to the API reference manual of 
@emph{GNU libmicrohttpd} and for that reason does not explain many of the parameters.
Therefore, the reader should always consult the manual to find the exact meaning
of the functions used in the tutorial.  Furthermore, the reader is 
encouraged to study the relevant @emph{RFCs}, which document the HTTP standard.

@emph{GNU libmicrohttpd} is assumed to be already installed.  This tutorial
is written for version @value{VERSION}.  At the time being, 
this tutorial has only been tested on @emph{GNU/Linux} machines even though
efforts were made not to rely on anything that would prevent the samples from being
built on similar systems.

@section History

This tutorial was originally written by Sebastian Gerhardt for MHD
0.4.0.  It was slightly polished and updated to MHD 0.9.0 by Christian
Grothoff.