I need you to develop some software for me. I would like this software to be developed for Windows using Java. To implement the system using sockets programming for message exchange over TCP/IP. You may choose any programming language provided that it provides low-level socket APIs. Java and Java sockets or datagrams are recommended as a tutorial will be given on networking programming using Java, and practical programming exercises will be given at the first tutorial session. You are NOT allowed to use high-level APIs (e.g. Java RMI) or client-server tools for message exchange purposes. The purpose of this assignment is to gain experience using TCP and sockets programming and to investigate the reliability issues.
You may need to make your own reasonable assumptions and decisions for unspecified design and implementation details. Your system may run on the same machine with two server processes, S1 and S2, and several client processes. Your system should be able to survive the following failures:
1. normal cases where both servers are working;
2. kill the server on S1. The clients should automatically switch to the server on S2;
3. restart S1. The internal state of S1 should be automatically synchronized with S2;
4. kill the server on S2. The clients should automatically switch to the server on S1.
report documenting the system design and implementation details and the system source code. The report may include the following sections:
System Architecture
Discussion on System Design Issues
Program Design and Implementation and Testing Results
based on the following criteria:
Milestone A
1. An auction server is able to serve multiple users
2. The server is able to authenticate the user
3. The auction items can be displayed on the user screen
Milestone B
Server functions:
1. The system is able to check the minimum bid
2. The system is able to check the validity of bids
3. The system is able to check bids after the time limit
4. The system is able to broadcast the winning bid to clients
5. The system is able to notify the time left.
User Interfaces
1. Users can see other bidders and the bidding status
2. Users are notified of invalid bids
3. Users can see the time left for a bid
4. Overall screen design
Milestone C
Reliability functions:
1. The backup is kept the updated status
2. The backup is able to take over upon the primary failure
3. Clients are able to switch to the backup after the take-over
4. The primary resumes operations upon recovery and is able to synchronize the updated information
5. The primary is able to take over upon the backup failure
6. Clients are able to switch to the primary after the take-over