Assignment 3: HTTP Server
Due Friday, May 2 2025, 11:59 pm Central Time.
Submissions handed in by the due date receive a small on-time bonus.
All students are granted a pre-approved extension or “grace period” of 24 hours after the due date. Late submissions are accepted during the grace period with no penalty.
The grace period expires Saturday, May 3 2025, 11:59 pm Central Time, after which no further late submissions are accepted (or are even possible).
This assignment will replace the final examination and will be worth 15% of the overall grade.
This assignment is an individual homework. No group work is allowed.
The Hypertext Transport Protocol (HTTP) is the most commonly used application protocol on the Internet today. Like many network protocols, HTTP uses a client-server model. An HTTP client opens a network connection to an HTTP server and sends an HTTP request message. Then, the server replies with an HTTP response message, which usually contains some resource (e.g. file, text, binary data) that was requested by the client.
In this assignment, you will implement a HTTP server that handles HTTP GET requests. You will provide functionality through the use of HTTP response headers, add support for HTTP error codes, create directory listings with HTML, and create a HTTP proxy. The request and response headers must comply with the HTTP 1.0 protocol found here.
Here is a list of documents that we suggest you read and work on in sequence. This will help to minimize the time you spend on every step between setting up your environment and submitting your work.