The server can read its set of questions from a file or from a database to each
client that connects to it. The server must send the questions one at a time, and must
only send succeeding questions to clients when they have answered the previous
question. For simplicity’s sake, you are allowed to require positive integer inputs from the
user (Think of questions that ask on a scale of 1-5), but you can make it more complex.
Once a client has finished answering the set of questions, the server should reply a
summary and a response to all the answers of a client, then the client can disconnect.
Note that the server should be able to identify each client via IP Address and another
identifier of your choice. The server should also be able to handle saving and processing
each client’s set of answers without mixing them up with other clients’.
Terminating the server (through CTRL + C) should close all connections and
terminate all clients before terminating the server itself. The client, on the other hand,
should display an exit message if the user decides to terminate it with CTRL + C, and
the server should clean up.