Due on Wednesday, September 10. Please email your written report (in PDF or PostScript) to the CS257 account (cs257@cs.rochester.edu) by midnight September 10. Late turn-ins will NOT be accepted.
The purpose of this assignment is to give you experience on socket-based network programming and basic techniques of network measurements. Sockets are the key interface between applications and networking systems. In this assignment you are asked to write simple programs with TCP sockets. You can write your program in C/C++ or Java. However, I strongly encourage you write it in C/C++ since Java contains unnecessary fat that makes accurate measurement very difficult. In particular, you won't be able to use Kai Shen's high resolution timer unless you program in C/C++.
Warmup on Socket Programming:
This part is a warmup on socket programming and it will
NOT be graded. You can skip this
part if you are already fairly familiar with socket programming.
For this part, you will implement is a client and server
that communicate over the network. The server is essentially an
echo server with a little additional functionality. Instead of
simply echoing the string it receives, the server returns a string
with all upper case letters replaced by lower case letters and
every space changed to a '.'. Here is what the client and server do:
Here is an example how your server should work.
Assume that you start a server on machine foo.csug.rochester.edu
(this machine doesn't really exist, find one yourself) listening to
port number 32000. The syntax should look like the following:
The Real Assignment:
For the measurement assignments, you may need to repeat the experiment
many times and then take the average. Use
a high resolution timer
whenever necessary. The goal is to have STABLE
measurement results. For comparison purposes, all measurements
MUST be done on Linux machines of the undergraduate
lab or the graduate software lab.
Turn-in:
You should turn in a written report for this assignment and indicate the location of
your source code for solving each question.
/u/jdoe/...). Your
files must be in the department undergraduate or graduate network file system and
make sure your files are readable by others. Again, do
NOT include any source code in the written report.