
        HTTP Servers

This folder contains three more versions of a simple HTTP server.

The servers in this folder all implement the GET, HEAD, POST, PUT,
and DELETE methods. The POST and PUT methods let a client upload
data to a server. The DELETE method lets a client delete data from
a server. These methods enable us to write "dynamic" web applications.

We usually think of HTTP as a protocol that lets web browsers download
resources (files of type html, css, JavaScript, image, pdf) from a web
server. But to create interesting and useful web applications, we need
a way for web browsers to upload data to the HTTP server. The GET method
allows a URL to have a query string, which is data that is uploaded to
the server. But the length of a URL is limited, so query string cannot
be used to, say, upload a file. The POST and PUT methods provide a way
for the browser to upload an unlimited amount of data to the server.



As in the previous folder, the first server in this folder does
not implement persistent connections. The second version does.
And the third version is multi-threaded. The first server is the
easiest to do experiment with since it always uses one tcp
connection per HTTP request/response.

