CSCI-4220 Network Programming
Spring 1999
Project 5 - Multiuser Chat System
Due Date: April 19th
Chat
This project involves the design and implementation of a "chat"
system capable of supporting multiple users. You need to design the
system, including the architecture (could be client/server
peer-to-peer or some combination) and the application protocol. There
are a few general things to keep in mind when designing the system:
- You want to be able to support many users.
- You would like to keep network use to a minimum.
- System response time should be minimized.
- You would like the system to be somewhat scalable (able to grow).
- You would like the system to be portable.
- You would like the system to be robust (able to handle minor
network interruptions without going down).
- You would like to provide cool services (perhaps more than
simple text messages?).
There are many tradeoffs involved, and there is no "best" design. You
should decide what you want to focus on and build your system to
optimize those parameters. For example, you could decide that system
response time is the most critical issue and design your system to
minimize response time even though you might sacrifice scalability or
perhaps robustness. You decide what is important and design your
system accordingly.
Your design is a large part of the project. If you are agressive with
your design (you decide to build the absolute best system), then I
don't expect you to be able to complete the implementation. If you are
more interested in doing a complete implementation, you should settle
for a system design that is sub-optimal.
Please contact Dave if you have ideas you want to discuss, or aren't
sure which way to go. The general idea is that you get some experience
designing and implementing your own system, as there are numerous issues
that you won't ever be exposed to when implementing existing
protocols.
Some Ideas: Below are some ideas on non-typical systems you
might want to consider. There is no problem with developing a simple
system, these are just some fancy ideas...
- A multi-server system (like IRC) that is capable of
supporting thousands of users.
- A single server system that supports multimedia chat
(sending and recieving sounds, images, etc).
- A peer-to-peer forwarding system that can automatically adjust to
(work around) minor network outages.
- Got others? send them to Dave...
If you would like to take on a large project and want to team up in
a small group - send Dave email with a (brief) proposal of your
project and the number of people involved. You must get approval
to work on a team project.