CS 268 - Assignment 4: Configuration File Transfer


Given: April 11, 2000
Due: May 5, 2000
Language Options: C, C++, or Java

A frantic potential customer for your consulting business asks you to do some work for them. They have a stand alone embedded system that needs to be deployed to consumers. The product is connected to the general Internet through a modem. The problem is that the products configuration has become complicated. They want to store the configuration at a centralized location and not on the machine itself. So, you are brought in to provide a solution. The configuration is a simple text file of anywhere from 1 KB to 30 KB.

The customer asks that you design and build a client application and a server application. The client application will be deployed in the embedded product and should be a stand alone application that will be ran when the configuration is to be saved or retrieved. The server will run at a location determined by the customer and should handle multiple clients saving and retrieving configuration files concurrently.

You are free to use any protocol you deem fit or create your own. However, keep in mind that the client should be as simple (and small) as possible. The client application will need to take, as part of it's command line, a filename and the operation to perform (either save or retrieve). The IP and other information for the server should also be configurable via the command line. The client application should print out only errors that occur. The client application should return 0 on successful transfer and 1 on an error. The application must detect transfer errors within 5 minutes. The server must store configuration files based on a unique product serial number (10 digit alpha-numeric). This number must be sent in the transfer and specified on the command line of the client application.

The customer asks for a design document detailing the protocol used, as well as, the source code itself and the output of a test plan on the server and client.

You will need to turn in a design document, test plan for the client and server, test plan output, and source code.

Extra Credit

Value: up to +8% onto final grade

For extra credit, add authentication via a client password to the operation of storing a configuration. The password will need to be unique to the serial number and a shared secret [+2%]. The configuration file may, at a later date, contain sensitive information such as credit card numbers. Add in optional encryption support for the transfer [+4%]. This piece may not be implemented [only +3% then]. For C/C++ and Java, the student with the smallest client will be given [+2%] and held in awe by all. This size should be mesaured by the size command for C/C++ and by the class file size in Java. This bonus will be given twice. Once for C/C++ and once for Java. Use of UDP and TCP will add some overhead. UDP will add a very small amount and TCP will add quite a bit.


Todd L. Montgomery (revised 04.10.2000)