CS 4/594: Distributed Systems

Spring 2010
Micah Beck instructor

Class Project
Due 4/30 in or before class.
Electronic submission to sellers@cs.utk.edu prefered.

For your project, you are to create a peer-to-peer chat client that works in the local area network.
  1. You can use UDP or TCP communication. You may use a topology file that lists all possible participating clients (or you can use UDP broadcast to find all peers in the local area network).
  2. Upon startup, your client should search for other instances of the client and connect to an ongoing chat when possible. If no other clients are detected, a new chat session should be created.
  3. Your chat client should create periodic checkpoints of the session along a consistent cut, storing the state of the session and any messages in the channels.
  4. Your client should handle as many error conditions as possible without restarting (eg loss of a peer). However, some conditions can be better handled by resetting to a saved state. Any client should be able to request a reset to a saved state at any time.
  5. In order to generate non-trivial channel state, you should introduce artificial communication delays of at least 1-10 sec (as much as 30 sec may be required, depending on traffic).
  6. This specification will be elaborated further as issues arise.