You are to implement an online auction as a client-server application (not Web-based). For simplicity's sake, the auction should involve just two items for which people may bid. At the start of the application, the server will expect to be told the final bidding time for each of the two items, using the 24-hour clock. Clients may then connect to the server at any time and enter the auction. Whenever a new client makes connection, the server should display an appropriate message (in the server window) and should then transmit the item codes, brief textual descriptions and final bidding times for both auction items to the client.
Any newly-connected client will display the code, description and final bidding time for the current item, using a GUI. The server will accept bids from connected clients up to the final bidding time for the current item and will also continue to process new client connections. Each bid from a client must be accompanied by the relevant item code, which should be user-selectable from a drop-down list (so that it is impossible to send an invalid code). As each final bidding time for an item is reached, an appropriate message should be displayed on the server. Note that it will be necessary to use a separate thread for the detection of each deadline expiry.
Any valid bid (i.e., one that is for the current item, occurs before the bidding deadline for that item and is higher than the previous highest bid) should cause the server to send the message "Bid accepted" to the appropriate client. Any bid received after the final bidding time for a given item should cause the server to transmit the message "Late bid" to the client concerned, whilst any bid lower than the current highest bid should cause the server to send the client the message "Low bid". All responses from the server should be displayed in the client window.
In order for the user to get an update on the current highest bid at any time, he/she can simply send the code for the item plus the word 'status' and the server will return the required figure. (If a drop-down list of item codes is used again, it should not be possible to send an invalid code.) If bidding for the item has finished when the user makes this query, the server should send back a value of -1 (though a meaningful message should be displayed on the client, of course). The client should display the current highest bid (as far as it knows it) at all times.
7 freelancers are bidding on average £119 for this job
I'm an experienced Java Developer. I have worked on similar projects before, so I understand your needs perfectly. I will be able to complete this project in a professional manner.