Windows .NET C# - Basic Asynchronous Server & Client Console Applications

Job ID: 30979136

Budget: $250 – $750 USD

I need a Windows .NET C# programmer experienced with asynchronous sockets to create console server and client pair with functionality as follows:

-------------

Server:
*Upon launching the console server application the user chooses (via keyboard input) to start the server (i.e. – begin listening and responding to connections) or exit.

*After the server has started the user can choose the following commands:
1: Show a list of all connected clients
2: Send a message to a specific client (the user would then choose the client and then type in the message to send)
3: Disconnect/boot a client from the server
4: Disconnect/boot all clients and shutdown the server

When a new client connects to the server, the client is added to the list of connected clients and a notification given. The server also sends a message to the client saying “Welcome to the server”.

When a client disconnects from the server, the client should be removed from the clients list and the socket cleaned up and a notification given.

As the server is running it will also display any messages received from clients.

Every five seconds the server must poll all listed clients to see if any clients are no longer connected (that did not disconnect gracefully). If a client does not respond within another five seconds, that client should be removed from the clients list and the socket cleaned up.

--------------

Client:
*Upon launching the client console application the user chooses (via keyboard input) to connect to the server or exit.

*After the client has connects to the server the user can choose the following commands:
1: Send a message to the server (the user would then be prompted to type in a message to send)
2: Disconnect from the server

As the client is running it will display any messages received from the server.

If the client is booted from the server it should gracefully disconnect and clean up the socket.

If the client does not receive any polling requests from the server after 10 seconds, the client should consider the server offline and gracefully disconnect and clean up the socket.

------------------

Misc:

The messages sent between the client and server (in both directions) should have some indication that they are complete; for example maybe a tag the end of the message. This way the server and client knows if the message is complete or needs to wait for more data.

------------------

The final product must be delivered as two Microsoft Visual Studio projects; one for the client and for the server. .NET version used should be no higher than 4.7.2.

---------------

To prove that you have read the entire project proposal please include the word "CAT" in your bid.