COMP 430 Programming Project 4: Networking
Choose one of the following project ideas. You may work individually
or in groups of no more than two.
Purpose
The main point of each of the project ideas below is to implement a
networked application. You may implement your program using either
sockets or remote method invocation (RMI). You are welcome to
complete this project in Java, C, or Python. If you would prefer to
use a different language, please consult with me first.
Program Options
- Write a simple chat or messaging program that allows two (or more) people
on different computers to communicate with each other in real time (e.g.,
not using email).
- Write a tic-tac-toe game that two people on different computers
can play against each other. An ascii interface is fine. If you would
like to implement a GUI you may use the Grid Package (grid.jar, with accompanying
documentation). If you would like to use a non-client/server
version tic-tac-toe program as a starting point, download and unzip TicTacToe.zip.
- Write a Battleship game that two people on different computers
can play against each other. An ascii interface is fine.
- Come up with your own idea for a networked application and email
me a proposal.
Helpful Hints
Whichever option you choose, keep in mind that most computers these
days have software firewalls that will block incoming connections on
nearly all ports. You can often get around this by tunneling the data on
your port through an ssh connection. Here are steps that will work for Linux or OS X machines:
- Start the networked application on the server machine.
- In a terminal on the client machine:
> ssh whatever_computer.whatever.edu -L your_port:localhost:your_port
- Next on the client machine, connect to localhost on your port. That connection
will be magically forwarded to corresponding port on the server machine:
> your_networked_app localhost:your_port
For more information on port forwarding, you can check out the SSH/OpenSSH/PortForwarding
web site.
Handing In
Your submission should take the form of a tarred directory as described in
HW #1 . That directory should contain:
- The source for your project. This should be well commented, and
should include such niceties as your name and date in every file.
- A plain text README file documenting your project. This
file should include your name(s), a short description of the project,
instructions for running your code, a description of any known bugs,
and anything else I need to know to evaluate your submission.
Grading
The project will be graded as follows:
Comments, documentation, code formatting,
and proper submission format |
20% |
Coding style |
20% |
Functionality |
60% |
This project is based on a similar project from Alyce Brady's 2004 operating systems course.
This page is maintained by Pamela Cutter pcutter{at}kzoo{dot}edu.