You have chosen to sponsor your bid up to a maximum amount of .
In this task, you will solve a concurrency problem using the key concepts: Processes, inter-process communication, client-server model, network programming, sockets, managing asynchronous i/o
You are to write a server and the client processed to act as a dealer and players for the card game, Black Jack. For the purposes of this assignment we will be using a simplified version of the rules for the game. These rules are to be realized in the server (and dealer) with a specific protocol which will allow ANY client process that also implements the protocol to connect to your server and play the game.
* Criteria that your server should satisfy include:
The server should be accessible from both local and remote sites. This means that the dealer and the player processes may reside on different machines, provided that these machines are connected by the Internet.
The master socket to which clients will connect should use port number 2000 + the last three digits of your student ID. For example, if your student ID is 223456, you should be using port number 2456. This port number should appear in the header of the document that will accompany your solution.
Busy-waiting must be avoided.
The server must support the protocol outlined below.
The game is played in ``rounds''. At the start of each round a number of player connections are accepted by the server, and a hand of blackjack played with each in accordance with the rules provided.
The server initiates a round by accepting the first available connection from its master socket. Player processes connect to the server to express their willingness to participate in the current round.
When a player first connects, it sends the server the magic word 0xdeadbeef. This word indicates to the server that this is an actual player that knows the rules of the game (and uses the correct protocol). A player that doesn't send this word within 5 seconds should be disconnected (its socket is closed) and ignored. Once the first player is authenticated, the server should proceed to accept additional players in the same fashion until: