CSE132 Lab 3: Interprocess Communication

start on design Tuesday, April 8 after lab section
protocol design Thursday, April 10 in lab section
code review Tuesday, April 15 in lab section
demo Thursday, April 17 in lab section
turn in lab packet Tuesday, April 22 by 10:07am in class

Goal: Upon completion of this lab, you should be able to use a provided client/server framework to modify an application for client-server interaction.

Overview: Building on the client/server framework that we designed and discussed in class, complete one of the following options to develop experience using interprocess communication. You may want to complete this assignment with your partner using pair programming techniques, taking turns at the keyboard.

  1. (Difficulty: Moderate) Modify your audio clip manager (Lab 0) to save and load audio clips on a remote server. All clients connected to the server should be able to see a list of everyone's clips, and should be able to play any of them. If you choose this option, use a BufferedInputStream and a BufferedOutputStream for better performance.
  2. (Difficulty: Relatively Easy) Modify Variation 2 of the rapid prototyping exercise (Lab 1) so that two or more players can "race" against each other. The server will need to pick the random letter and send it to the clients, and the first one with the correct letter pressed (as determined by the server) gets a point. At the server, provide a simple graphics display to see the scores for each client as they are updated during play, with some way of identifying each client (possibly by name).
  3. (Difficulty: Most difficult) Modify your customizable game (Lab 2) so that two or more people can edit the same game interactively.

Protocol Design: On April 10, you will work with your lab partner to design a message protocol that supports your choice of the three options above. Your design should include a message type (or class hierarchy of message types), detailed information about what will be included in each message type, a description of what how the client and server will behave in response to each message, and under what circumstances each message will be sent by the client and server.

Code Review: In lab section on April 15, be prepared to discuss your in-progress implementation with a TA and another team.

Demo: You will demo your application, with interprocess communication support, on April 17.

Lab packet: On April 22 at the beginning of class, at 10:07am, you will turn in your lab packet with the following items:

  1. A completed cover sheet.
  2. Your protocol design.
  3. Your client and server implementation. (Do not turn in the provided code, and do not turn in code for other parts of the application.)