Create two programs: a client and a server. Let the two communicate through sockets. The client will pass a string to the server, the server simply reverses the string, and returns it to the client which prints it out. Use a multi-threaded server that will spawn a thread for every request. Test your implementation with multiple client/requests. Check if you can simulate denial of service.