EECS 3214 : Programming Assignment 2

Submit this assignment using the submit command (see the instructions below). The deadline is Nov 4, 11:59 pm.

Objective:

The objective of this lab is to synchronize several clients to connect to a server at a predetermined time. This is a part of the requirements of a Distributed Denial of Service (DDoS) attack.

The parties involved in this project are
(a) a coordinator who communicates to nodes to connect ("attack")
(b) nodes who serve as clients to open a connection to the server and
(c) the server, who allows concurrent TCP connections on some designated port. The objective of the nodes is to open a TCP connection (each) to the server as close to simultaneously as possible. Notice that for this functionality to be supported, the nodes must be in server mode (listening on a port) until they hear from the coordinator. Then they switch to being in client mode, connecting to the server at the specified time.

Step 1: Check that your program works by using one coordinator, 3 clients and a server. Have the server respond to each client by sending its current time and close its connection. Have the server write the log of connections to a file, and close each connection.
Step 2: Keep each connection alive 10-30 seconds to allow overlap between connections. You can do this by having the nodes and server exchange random strings a few times. Have the server write the log of connections to a file.

Instructions for submitting assignment 2 Submit the programs using the following command:

  1. The programs you submit should work and be documented. No separate report is needed.
  2. Your documentation should include:
    1. situations (if any) when your program may not work correctly
    2. possible improvements and extensions to your program that you would do if you had more time
    3. instructions to compile and run your program. Definitely include this if you have used helper classes
Demonstration The TA may ask you to demonstrate that your program works on the departmental Linux machines. You will run the coordinator, the server, and 3 clients and show that the program implements the specifications described above.

Grading

Program works correctly : 70%
quality of code and in-line documentation : 30%

NOTE: Late submissions will not be accepted.

Copying, teamwork

Copying of programs (also written homeworks and exams) or teamwork on an assignment (written or programming) is not permitted.  No form of copying is tolerated in this (or any) course, in accordance with departmental policy.