1. Client/Server System
You have one server and 5 client processes. Server and clients should be on different machines. There are a list of 5 items to be bid from clients.
Initially, each client decides its maximum bid price for all items.
* *Bidding Initiation*: periodically (every minute), each process initiates a bidding procedure for one randomly chosen item by sending *item number* and *price* to the server. The offered price can be chosen randomly between 0 and *max_price*.
* *Notification*: Upon the receipt of a bidding, the server broadcasts to all processes the bidding item and price.
* *Bidding follow-up*: Upon the receipt of a notification, a process other than the initiator will decide to compete or give up. If the price is higher than the maximum price initially set for this item, it will give up by keeping silent. Otherwise, it waits for a short random time (0-10 seconds) and follows up by adding the price by 5-20% and sends to the server.
* *Bidding conclusion*: After notifying all processes, the server starts a timer of 30 seconds. If no new bidding received for the same item, the most recent bidder wins. The server simply sends a congratulation message to the winner.
* *Printing*: (1) bidding price from any process. (2) which processes have given up. (3) which process wins for which item.
* All processes run continuously for a long time.
* ***Bonus***: GUI (10%).
**Example**: 5 processes bidding for a book with maximum prices being $40, $50, $60, $65, and $45, respectively.
If process 1 chooses $25, process 2 offers 27.5, process 3 offers 31.25, so on. When the price reaches $40 or higher, process 1 will give up. Eventually, process 4 wins.
1) Complete and fully-functional working program(s) in executable form as well as complete source code of all work done.
2) Deliverables must be in ready-to-run condition, as follows (depending on the nature of the deliverables):
a) For web sites or other server-side deliverables intended to only ever exist in one place in the Buyer's environment--Deliverables must be installed by the Seller in ready-to-run condition in the Buyer's environment.
b) For all others including desktop software or software the buyer intends to distribute: A software installation package that will install the software in ready-to-run condition on the platform(s) specified in this bid request.
3) All deliverables will be considered "work made for hire" under U.S. Copyright law. Buyer will receive exclusive and complete copyrights to all work purchased. (No GPL, GNU, 3rd party components, etc. unless all copyright ramifications are explained AND AGREED TO by the buyer on the site per the coder's Seller Legal Agreement).