CS151 Lab 3:  Chat Groups and Final Project Start

Home Search E-mail Java Resources Discussion
Final Project Start

Due 11:59 PM Sunday Feb. 25, 2001

AMNESTY OFFER!!

Since Lab 3 depends on Lab 2, late Lab 2's will accrue penalties at a rate of only 2%/day until Sunday 2/25/01.   Regular penalty rates apply after that.

This lab is broken into two separate pieces, which should be handed in separately.

The first section is to add the ability to host a "chat group" to your RMI chat program.   A chat group is defined as multiple connections where every participant receives the messages sent out by every other participant.

The second section is to start the final project for CS151.  See the directions to the left for more information.   You will need to spend time in lab organizing your groups and teams.   Joining a group or team that is not in your lab section is not recommended!

Group Chatting Implementation Suggestions

  1. The notion of a group chat requires that the same chat target be handed to all the clients that want to join that group chat.  It thus cannot be a local variable.
  2. Incoming messages need to be echoed to all participantsNote that the existing protocol already has an echo to the sender which is a different format than what needs to be sent to the other participants.
  3. A non-group enabled client should be able to participate in a group chat.   Don't throw out your old code!
  4. The host of the group chat will need to keep a list of the chat targets of all the participants.
  5. Depending on how the group chat host is implemented, the choices presented to the callers is affected.   Additional methods on the connection manager object will probably be necessary--the architecture shields the caller from directly seeing these methods.
  6. The host of the group chat is an odd beast.   There are several ways of implementing its behavior.   For instance:
    1. The host acts like any participant, externally, but internally, it has all the management for group chatting.   In particular, the way it sends out messages is affected.   This is probably the most flexible system and a more intuitive implementation for the user.  It is more difficult to code however. 
    2. The host is completely separate from the group chat hosting.   It joins the group chat by connecting to localhost and choosing the group chat.    The host itself would thus not have a display frame, since all messages are echoed somewhere else.   This technique trades flexibility and usability for ease of coding.
  7. Multiple chat channels (not required) requires multiple chat targets that can be handed to participants.
  8. All your RMI are belong to us.