EECS 122 Project 1 (due 4/15/99 [updated!])

Web Server


In this assignment, you will build a server for web clients. The project is intended to expose you to the socket programming interface, the typical OS manipulations required of an Internet server, and the HTTP protocol used to provide web content (today, mostly HTTP 1.0). The project will be evaluated on correct operation, documentation, performance, and "clean-ness" of the code. This means that not only should the implementations work properly, but they must be understandable to others who will read the documentation or source code.
For more details on the evaluation criteria and how to submit the project, click here.


Base Server Specifications Your server should be written in C or C++ and executed in a Unix or Windows NT System [* see footnote at end for NT accounts]. They must be able to handle more than one simultaneous client access. They should also be robust to unusual input introduced by the client program (e.g. very very long URLs). They must handle HTTP 1.0 clients (for HTML, GIF, and JPEG files, GET and HEAD methods). They must support logging of connections using the common logfile format (see below) and the execution of CGI scripts (at least for GET). Here is a more detailed summary (for HTTP 1.0):

The project will be implemented in groups of three people. You may partition the work however you like, but each group member will receive the same project grade. Listed below are a number of extensions for the basic web server. You must choose at least one of these extensions to provide in your server. Additional extensions will be rewarded with a better grade on the project.

Once the server is ready to be turned in, it should be left running on one of the EECS machines on some port number you choose. You will need to provide the TAs with the name of the computer and port number on which it is running. The first page displayed (e.g. index.html or similar) should indicate the members of the implementation group, SIDs, and e-mail addresses, and special features the server provides, and any other particular information you would like us to know about.


The following extensions may be implemented in your server. You must implement at least one of them. Other extensions (that you choose) may be implemented [ask for approval] in addition to one or more of these, provided they are well-described in the documentation.

  What to turn in?

  Where to get help?

Socket Programming

The Web

[*] Students wishing to use Windows NT
Please send e-mail to kevinm@cory.eecs if you with to use the facilities in 111 Cory for Windows NT programming. He will arrange account creation for you.

Back to EE122 Homepage