CMPSCI 377: Operating Systems
Lab 3: Interprocess Communication

Due Dates: March 14, 2003 19:30 (User Guide draft)
April 16, 2003 23:30 (complete program)

Purpose of Assignment

This assignment will give you experience with communication between processes that are executing on different machines (and hence located within different JVMs).


This lab project will count for 30% of your lab grade (so 11.7% of your final grade).

You may work with one other person in the class. If you choose to do so, please send email to the professor and the TAs in order to indicate who your partner will be and which of the two of you will be handing in the program. Do not share/accept code with/from anyone else or the net.

Where to do your work

For this lab, place your final submission in the following directory:


If your files are not located in the right place or our robot cannot read your homework at the time of submission, then we will not be able to grade it. In order to make sure that our robot can pick up your program, please check things by executing the ~fagg/bin/checkhw script with the lab3 parameter.

You need only hand-in one copy of your program.

The Problem

For this lab, you are required to implement a multi-player game. The requirements are as follows:

What to Hand In

Place in your Hand-In directory the following:

Important Dates

March 14, 2003 19:30: turn in a draft of your User Guide.

April 16, 2003 23:30: turn in your complete program

April 23, 2003 17:00: by this date, demonstrate your program to one of the TAs or the Instructor. You may do this during their office hours or by appointment (don't try to make appointments at the last minute).

Testing Your Program

Before handing in your program, make sure to test it carefully with at least 4 users (recruit your classmates, friends, etc.).

We will check the correctness of your program during your demonstration.

Possible Projects

Hints and Notes

Having trouble starting your server (strange exceptions being thrown when you try to bind the object). Try the following:

If you see: 'port already in use' when you try to start the rmiregistry, this means that one is already running. You may or may not have to restart this process, depending upon the conditions. NOTE: make sure to kill your rmiregistry process when you are done for the day.

RMI Registry: I strongly suggest that you pick your own rmi registry port (you can specify it with the -p option of the rmiregistry program). Also - when you are done using the registry on a machine, please make sure that you kill it.

Poker player hints: Here are some hints from my implementation of the poker player.

Java Hints

This page is online at
Andrew H. Fagg