For the final program, you will be creating a multi-threaded client/server program.
Exactly what the program does is up to you, but you need to email me your proposal by 11/18.
Everyone needs to do something unique, so the first to email me a particular idea gets it.
You will be presenting your program and results in our final two class periods, 12/6 and 12/8.
Program ideas. Here are some possible program ideas:
Directory synch - Synchronize all the files in a directory.
Check the CRC of the file before shipping over the network to speed to process and conserve bandwidth.
Investigate whether compressing during transport helps or not.
File blaster - Investigate different ways to speed the transport of a large file to/from the server.
You should compare some different methods such as TCP versus UDP transport, using multiple simultaneous TCP connections, etc.
The file should be guaranteed to eventually arrive intact.
Audio chamber - Make a server that merges the audio received from multiple clients and sends it back to all the clients.
NAT traversal - Attempt to establish a two-way UDP connection directly between two clients behind NAT boxes using the server to coordinate.
Poor man's concatenative TTS - Clients send some textand the server constructs an audio response by splicing together recorded versions of each word.
You could use some of the resources from here.
Multi-player game - Create a real-time multi-player game of some sort with the server coordinating the state of all the players.
Socket classes. You can either use the socket classes you developed earlier in the term, or use my reference version.
I have added some functionality above and beyond what you did, including UDP transport.
Platform. Your server program should run on our server in London.
Your client program can run either on a linux host (such as katie) or a Windows lab machine.
Submission. Submit a zip of your project directory via Moodle.
You can safely delete large Visual Studio files before zipping.