Description and Project Goals
In this project, you will learn about socket programming through
the development of a simple web client that will drive the testing
of a web server library, called libmicrohttpd. The project will be
written using C/C++ sockets. The goals of the project are:
- To understand how to use sockets for network programming,
including the use of
select and multiple threads.
- To understand the HTTP 1.1 protocol
- To understand how the client/server architecture works when
designing network protocols
- To be exposed to a well-designed library and software engineering
- To understand how to use svn, a version control system
For this project you will need to use subversion to download
the project files, to store your project, and to protect yourself!
Version control systems are vital for large engineering projects and
when working with groups. They also allow you to work from multiple
places, such as in a lab or at home and merge those changes.
- Install subversion if you do not have it on the machine you are
Visit https://svn.cs.du.edu and
follow the instructions to get an account created.
If you followed the previous instruction, then your initial checkout
will create a directory with your user name. Switch into this
directory and grab the tar/bzip2'ed libmicrohttpd files
Unbzip and untar the files using the following command:
tar -jxvf libmicrohttpd.tar.bz2
This will create the libmicrohttpd file in your user directory.
Perform an initial commit of libmicrohttpd:
svn add libmicrohttpd
svn commit -m "initial commit"
Now, anytime you need to know the status of which files need to be
committed and which need to be added, just type:
You can checkout your user directory on any machine and work from
there. Just make sure you commit all your changes when you are
done. As a general rule, you should commit files after you've changed
them or added things so that subversion can keep a log of your changes
and you can rollback if necessary. A backup will also be kept of the
You initially need to run the following commands to build the project:
- ./bootstrap : this creates the configuration file you need to
configure the project
- ./configure : this creates the Makefiles to build your
- make : this compiles your project.
Your project lives under the
directory. The main
header files is under
and your main
source is under
. You'll be modifying the
to write this project.
Undergraduates: How to Proceed
The header file,
microhttpd.h, has documentation
explaining the purpose of the functions of the library. The project will
be completed over three checkpoints:
Graduates: How to Proceed