CPE 400/600 Computer Communication Networks
In this assignment you will build a messaging system similar to Messenger.
Your task is to implement a server and a client program for the messaging system.
The task of the server includes
The server is assumed to be up and running all the time.
- to keep track of online clients including their IP addresses,
- to answer client queries that ask for the availability of another client,
- to set up the communication channel between them (only in phase 1), and
- to keep a list of live chat sessions.
Phase 1: Chat session is set up by server where
client messages are relayed over the server.
All the communication is via TCP.
Phase 2: Clients login and obtain information from the server using UDP.
Then they chat with their buddies directly using UDP.
Bonus: Use multicast groups to send chat messages to buddies in a chat room.
- This is an individual assignment and you are expected to turn in your own work.
- You can develop your code either in C/C++ or in Java.
CPE 600 students should develop their code in C/C++.
- A client may leave the system with "quit" mesage.
However, there is no node failures,
i.e., a node leaving the system will notify the server before quiting the system.
- A client can join and leave the system multiple times.
- A chat session may include more than two clients.
- You are supposed to do this assignment in UNIX environment.
You can use the UNR UNIX servers:
computeX.cse.unr.edu for developing as well as testing your code.
- Your code will be tested on computeX.cse.unr.edu machines and
if your code does not work on these machines, you will lose points.
- This is an individual homework assignment and we will do our best to catch
any cheating activities, etc.
What to Turn In
You will provide the following thru WebCT:
- Source code of your program
- A makefile to compile your code
- A report explaning the details for your design
- Oct 27, noon:
Due date for the implementation of the first phase of the code and 2-3 pages report.
- Nov 26, noon:
Due date for the implementation of the second phase of the code and
submission of complete project with the required documentation.