CS 580 Client-Server Programming
Spring Semester, 2009
Assignment 3
© 2009, All Rights Reserved, SDSU & Roger Whitney
San Diego State University -- This page last updated 3/5/09
SDwitter Server
In this assignment you will write a SDwitter server. The server will implement the SDwitter protocol with one addition. All messages between the server and client will be in UTF-8 format. That is the server is to properly handle any message containing unicode characters encoded using UTF-8.
Implement an iterative server that logs all requests, supports configuration files and command line arguments. At present the configuration file/command line only has to handle the port number for the server, where to save the log file(s) and the command line should allow the user to specify which configuration file to use. This version of the server does not have to connect to the database, nor does it have to process the client requests correctly. For each different messages the server sends back the same response. So for example the server can respond with "ok:available;;" for all screenName requests. Don't forget unit tests.
Connect the server to a database. The server needs to save all messages and user information in the database. The server also has to be able to handle all messages correctly, which includes maintaining the correct state. That is for each connection the server maintains whether the client is logged in or not and responds to requests appropriately. At this point the server is still iterative. Don't forget unit tests.
Make your server concurrent. Don't forget unit tests.
Due Dates
Part 1 - March 13, midnight. Place your code in your repository in a top level directory called "assignment3". Make sure to include "part 1" in the commit log of the version you are turning in.
Part 2 - March 27, midnight. Place your code in your repository in a top level directory called "assignment3". Make sure to include "part 2" in the commit log of the version you are turning in.
Part 3 - April 10, midnight. Place your code in your repository in a top level directory called "assignment3". Make sure to include "part 3" in the commit log of the version you are turning in.