Note the following additional requirements/explanations:
The name of the client executable program must be
myftp
. The name of the server
executable program must be
myftpd
.
To avoid potential conflict in the use of the server's ``well known'' port number when
several students use the ceto server, you should use the TCP port allocated to you as
the default server listening port.
Tests should show the cases where both the client and the server are on the same
machine as well as on different machines (you may want to use ceto.murdoch.edu.au to
do the testing, however
you must kill your server at the end of the test
). They should
also show that more than one client can obtain the service at the same time. You may
use the command
script
to record the terminal I/O. When debugging your network
program on a standalone machine (e.g., on your home Linux), you may use
localhost
as the ``remote'' host name.
Tests should show that the program can transfer not only small files (e.g., 0, 10 and 100
bytes) but also large files (at least several mega bytes), and not only text files but also
binary files. In addition, you must show that the transferred file and the original file are
identical not only in their sizes but also in their contents (use
diff
command).
The specification of the protocol is an important part of this question. Please provide a
full specification of the protocol in a section separated from the client and server
implementations. You should complete this specification before starting the
implementation of the client and server programs.
Please note that the server must be implemented as a daemon and must log all of its
interactions with the clients.
Project 3: A Simple HTTP Client and a Simple HTTP Server (
Back to Beginning
)
This project involves an independent study of an existing protocol named HTTP (HyperText
Transfer Protocol), version 1.1, and then design and implement a simple HTTP client that is

3/5/2017
ICT374 Major Assignment Two
8/13
able to communicate with
any
HTTP server, and design and implement a simple HTTP server
that is able to provide simple services requested by
any
HTTP client.
Please note that a thorough understanding of the HTTP protocol is an important part of this
project. Unless you are confident that you are able to gain a thorough understanding of the
protocol, you should not select this project as your assignment.
This project has three components:
1. An essay of at least three pages long, explaining your understanding of the HTTP
protocol. The essay should provide details of the protocol that are relevant to the project.
2. Design and implementation of an HTTP client program using C, see the detailed
requirements below.
