1 CISC 665 Nova Southeastern University Assignment 1 This assignment is worth 30% of your total grade. Description An exactly-once service will guarantee a client’s request is processed at most once and at least once, provided the client does not fail. Your task in this assignment is to implement an exactly-once service in a client-server system. There is a single server in this system that supports multiple clients. This server must support non-volatile data and must recover from a crash. Connection-less protocols do not guarantee message delivery. The protocol implementation is based on a “best try”. In this assignment you will design and implement your communication using datagrams. The server’s exactly-once service must implement a data structure that will hold a fiveletter string. Initially the string is blank. When a client sends a successful request to the server, the server will modify its five-letter string in the following manner: • Shift the first four characters of the server string to the right by one character. • Store the character transmitted by the client in first slot of the server’s string. For example, the current value of the server string is “lmnop”. If the client passed in an “x”, the server would create a new string with the value “xlmno” and return this string to the client. You must design and implement a test plan for the exactly-once service. This includes error/fault injection. The system must be able to handle a server crash and begin running from the point in which it ended. Thus, you must have a mechanism for starting a clean system as well as a system that has just recovered from a crash. The client and server will display their activities to the screen and contain a logging mechanism. 2 Deliverables Client-Server Programs Your ZIP file must include the following: 1. A detailed discussion of the methodology you used to implement your client-server system and a concise and detailed design for the client-server system (methodology and design in one file). 2. The Java source files for the system (client & server java, do not submit as packages or jars). 3. The class files. 4. A description of how to install and use your system (keep it simple). 5. A test plan and test data. The files must be Virus free and must run in the Sun JRE.